выполнение параметризованных запросов для разных БД - PullRequest
0 голосов
/ 23 августа 2009

Многие люди знают, что важно использовать параметризованные запросы для предотвращения атак SQL-инъекций.

Параметризованные запросы также намного быстрее в sqlite и oracle при выполнении оперативной обработки транзакций, поскольку оптимизатору запросов не нужно повторно анализировать каждый параметризованный оператор sql перед выполнением. Я видел, как sqlite становился в 3 раза быстрее, когда вы используете параметризованные запросы, oracle может становиться в 10 раз быстрее, когда вы используете параметризованные запросы в некоторых крайних случаях с большим количеством параллелизма.

Как насчет других БД, таких как mysql, ms sql, db2 и postgresql?

Существует ли одинаковая разница в производительности между параметризованными и литеральными запросами?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2010

Что касается MySQL, MySQLPerformanceBlog сообщил о некоторых контрольных показателях запросов в секунду с неподготовленными операторами, подготовленными операторами и запросами в кеше. Их вывод заключается в том, что подготовленные операторы на самом деле 14,5% быстрее , чем не подготовленные операторы в MySQL. Для получения подробной информации перейдите по ссылке.

Конечно, соотношение зависит от запроса.

Некоторые люди предполагают, что есть некоторые издержки, потому что вы совершаете дополнительный обход от клиента до СУБД - один для подготовки запроса, второй для передачи параметров и выполнения запроса.

Но реальность такова, что это ложные предположения, сделанные без фактического измерения. Я никогда не слышал, чтобы готовые заявления были медленнее в любой базе данных.

1 голос
/ 23 августа 2009

Я почти всегда видел увеличение скорости - но только в первый раз вообще. После того, как планы загружены и кэшированы, я бы предположил, что различные двигатели БД будут вести себя одинаково для любого типа.

...