MySQLPerformanceBlog.com сделал несколько тестов в статье о « Подготовленные заявления ». Петр Зайцев написал:
Я сделал простой тест (используя
SysBench) чтобы увидеть производительность простого
запрос (выбор одной строки) с помощью
стандартное заявление, подготовленное заявление
и он подается из кеша запросов.
Подготовленные заявления дают 2290
запросов / сек, что значительно
лучше чем 2000 со стандартом
заявления, но это все еще значительно ниже
4470 запросов / сек, когда результаты
подается из кеша запросов.
Кажется, это говорит о том, что «использование» подготовленных операторов связано с тем, что они на 14,5% быстрее , чем при использовании прямого запроса, по крайней мере в этом простом тесте. Относительная разница, вероятно, уменьшается при более сложном запросе или большем наборе результатов.
Кажется нелогичным, что подготовленные запросы будут выполняться быстрее, учитывая двойное обращение к серверу и другие факторы. Тест Петра не хватает деталей. В любом случае вам следует запускать собственные тесты, поскольку тип выполняемого запроса, а также среда и оборудование, безусловно, являются важными факторами.
Что касается Query Cache, в прошлом было верно, что подготовленные операторы были несовместимы с результатами кэширования запросов, но это было изменено. См. " Как работает кэш запросов " в документации по MySQL:
До MySQL 5.1.17, подготовлено
операторы не используют кеш запросов.
Начиная с 5.1.17, подготовлено
операторы используют кеш запросов под
определенные условия, которые отличаются
в зависимости от способа приготовления: ...
В документации описываются эти условия. Иди прочитай.
Я рекомендую использовать подготовленные операторы для SELECT
запросов. Заключение в кавычки переменных при их интерполяции в операторы SQL может быть эффективным, если вы делаете это последовательно. Но даже цитирование может иметь некоторые незначительные уязвимости безопасности, например с многобайтовыми наборами символов (см. MySQL bug # 8378 ). В этих случаях проще использовать подготовленные запросы безопасным способом.