найти время для выполнения MySQL-запроса через PHP

Я видел этот вопрос в Интернете ( здесь и здесь , например), но я никогда не видел хорошего ответа. Возможно ли найти время, в течение которого заданный MySQL-запрос (выполняемый через mysql_query) принимается через PHP?

В некоторых местах рекомендуется использовать функцию microtime php, но похоже, что она может быть неточной. mysql_query может увязнуть с задержкой в ​​сети или вялой системой, которая не реагирует на ваш запрос быстро или какой-либо другой несвязанной причиной. Ни одно из них напрямую не связано с качеством вашего запроса, и это единственное, что я действительно хочу проверить здесь. (Пожалуйста, укажите в комментариях, если вы не согласны!)

Я только проверяю качество самого запроса, а затем удаляю PHP из уравнения. Используйте такой инструмент, как MySQL Query Browser или SQLyog .

Или, если у вас есть доступ к оболочке, просто подключитесь напрямую. Любой из этих методов будет лучше определять фактическую производительность ваших запросов.

Мой ответ подобен, но разнообразен. Запишите время до и после запроса, но сделайте это в своем классе запросов к базе данных. О, вы говорите, что используете mysql_query напрямую? Итак, теперь вы знаете, почему вы должны использовать оболочку класса вокруг этих функций raw php database (pardon the snark). На самом деле, один уже построен под названием PDO:

http://us2.php.net/pdo

Если вы хотите расширить функциональность, чтобы делать выборку вокруг каждого из ваших запросов … расширьте класс! Достаточно просто, не так ли?

На уровне php вам нужно будет записать время до и после запроса.

Если вы заботитесь только о производительности запроса, вы можете включить медленный журнал запросов на вашем сервере mysql: http://dev.mysql.com/doc/refman/5.0/en/slow-query-log.html. Это будет регистрировать все запросов дольше указанного количества секунд.

Если вам действительно нужна информация о запросе, возможно, вы можете использовать SHOW PROFILES:

http://dev.mysql.com/doc/refman/5.0/en/show-profiles.html

Лично я бы использовал комбинацию microtime-ing, медленного журнала запросов, mytop и анализа проблемных запросов с клиентом MySQL (командной строки).