Задавайте вопросы, мы ответим
Вы не зашли.
Здравствуйте! Где-то прочитал что если идут подряд 2 похожих запроса например ( SELECT * FROM `table1` WHERE `id`=12, SELECT * FROM `table1` WHERE `id`=15), то эти 2 запроса будут выполнятся "дольше" чем если вместо значения подставлять переменную со значением (SELECT * FROM `table1` WHERE `id`=param, SELECT * FROM `table1` WHERE `id`=param), помоему это связано с повторным анализом запроса мускулом перед выполнением, тоесть во втором случае анализ будет проходить 1 раз. Так ли это? Заранее благодарен за Ваши ответы!
Неактивен
ну в общих чертах - да, это так. кроме всего прочего, параметры при prepared statements передаются в бинарном виде, что уменьшает траффик, снимает с сервера задачу по конвертации данных.
Неактивен
Но надо понимать, что это работает только с явно подготовленными выражениями,
если просто написать
SET @a = 3;
SELECT … WHERE id = @a;
SET @a = 5;
SELECT … WHERE id = @a;
то эффекта не будет.
Неактивен
точно, это только для prepared statements.
Да, и подготовленные запросы не используют кэш запросов для версий MySQL ниже 5.1 .
Неактивен
paulus, спасибо. avgsoft Вы хотите сказать что если использовать например в php скрипте prepare statements при ЛЮБОМ запросе к мускулу, тогда запросы будут выполняться "быстрее" чем если использовать просто query? На сколько я понимаю prepare statements следует использовать только тогда, когда у нас есть несколько похожих запрсов, в противном случае это просто дополнительные затраты на сервере. Или я не прав?
Неактивен
Преждевременная оптимизация — корень зла
Неактивен
я не хочу так сказать :-)
вы полностью правы, прирост скорости исполнения даст только когда есть нeсколько похожих запросов.
работа по подготовке запроса это тоже работа и немалая.
Неактивен