SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.10.2010 13:15:33

cooler
Завсегдатай
Зарегистрирован: 14.01.2010
Сообщений: 52

Запрос селект

Здравствуйте! Где-то прочитал что если идут подряд 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 раз. Так ли это? Заранее благодарен за Ваши ответы!

Неактивен

 

#2 07.10.2010 13:33:43

avgsoft
Завсегдатай
Зарегистрирован: 23.09.2010
Сообщений: 36

Re: Запрос селект

ну в общих чертах - да, это так. кроме всего прочего, параметры при prepared statements передаются в бинарном виде, что уменьшает траффик, снимает с сервера задачу по конвертации данных.

Неактивен

 

#3 07.10.2010 13:38:21

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Запрос селект

Но надо понимать, что это работает только с явно подготовленными выражениями,
если просто написать
SET @a = 3;
SELECT … WHERE id = @a;
SET @a = 5;
SELECT … WHERE id = @a;
то эффекта не будет.

Неактивен

 

#4 07.10.2010 14:04:51

avgsoft
Завсегдатай
Зарегистрирован: 23.09.2010
Сообщений: 36

Re: Запрос селект

точно, это только для prepared statements.
Да, и подготовленные запросы не используют кэш запросов для версий MySQL ниже 5.1 .

Неактивен

 

#5 07.10.2010 14:07:27

cooler
Завсегдатай
Зарегистрирован: 14.01.2010
Сообщений: 52

Re: Запрос селект

paulus, спасибо. avgsoft Вы хотите сказать что если использовать например в php скрипте prepare statements при ЛЮБОМ запросе к мускулу, тогда запросы будут выполняться "быстрее" чем если использовать просто query? На сколько я понимаю prepare statements следует использовать только тогда, когда у нас есть несколько похожих запрсов, в противном случае это просто дополнительные затраты на сервере. Или я не прав?

Неактивен

 

#6 07.10.2010 14:29:33

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Запрос селект

Преждевременная оптимизация — корень зла wink

Неактивен

 

#7 07.10.2010 14:45:34

avgsoft
Завсегдатай
Зарегистрирован: 23.09.2010
Сообщений: 36

Re: Запрос селект

я не хочу так сказать :-)
вы полностью правы, прирост скорости исполнения даст только когда есть нeсколько похожих запросов.
работа по подготовке запроса это тоже работа и немалая.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson