Предоставляют ли MySQL подготовленные запросы выигрыш в производительности для запросов на сеанс? - PullRequest
4 голосов
/ 27 ноября 2008

Согласно документации, подготовленный запрос обеспечивает существенное повышение производительности, если вы выполняете запрос несколько раз, поскольку издержки сервера MySQL, выполняющие анализ запроса, происходят только один раз. Мне интересно, что именно они подразумевают под "многократным" там.

То есть, скажем, у вас есть веб-страница, которая выполняет запрос один раз. Теперь скажите, что страница вызывается 50 раз в секунду. Имеет ли смысл с точки зрения производительности подготовить () запрос (требуя, таким образом, двух обращений к серверу БД: один для подготовки запроса, другой для его выполнения) или просто отправить запрос в обычном режиме (для которого требуется только одно обращение) ? Является ли MySQL и / или драйвер PHP mysqli достаточно умным, чтобы понять, когда запрос был подготовлен () в предыдущем вызове?

1 Ответ

7 голосов
/ 27 ноября 2008

Нет. PHP - это архитектура, в которой ничего не используется, поэтому каждый ресурс, связанный с одним запросом (одним просмотром страницы), отбрасывается в конце этого запроса. Подготовленные запросы недоступны для последующих подключений к базе данных.

Сценарий, в котором вы получите выгоду от подготовленного запроса, - это когда вы готовите его и выполняете много раз во время одного и того же запроса PHP .

...