2010-05-10 6 views
4

У меня есть выбор и запрос, как показано ниже ...Как проверить скорость запроса mySQL?

$sql = "SELECT * 
     FROM notifications 
     WHERE to_id='".$userid."' 
      AND (alert_read != '1' OR user_read != '1') 
     ORDER BY alert_time DESC"; 
    $result = mysql_query($sql); 

, как я могу проверить, как долго запрос взял бежать?

ответ

0

может посмотреть на этой дискуссии:

How to test MySQL query speed, with less inconsistencies?

+0

Я уже видел это, но это не помогло. Я новичок в тестировании скорости, и я не совсем понял это. Я пробовал использовать microtime, но мне потребовалась скорость PHP, а не запрос. – Chris

1

Если выполнить запрос из MySQL в консоли вы, скорость будет отображаться сразу после того, как они запрос побежал.

+0

Я даже не подумал об этом, спасибо! – Chris

+0

Yaa! ПОЦЕЛУЙ. :) – 2010-05-11 02:57:21

+0

Да, я рассмотрел более сложный ответ, но, честно говоря, если вы заинтересованы только в базовой настройке, просто используйте функцию, уже встроенную в клиент mysql :) – Rob

2

использовать функцию php microtime() до и после mysql_query, а затем сравнить результаты.

$time1 = (int) microtime(); 
$result = mysql_query($sql); 
$time2 = (int) microtime(); 

echo ($time2 - $time1); 

(если вы используете микропоры (истина) - которая возвращает число с плавающей запятой, вы получите меньше Acurate номер)

+0

вы написали в комментарии к другому сообщению, что microtime измеряет скорость PHP. Я думаю, что для простых запросов, которые работают менее 1 миллисекунды, это может быть бесполезно, но также я не вижу причины для измерения быстрых запросов, подобных этому. Я думаю, что для запросов медленнее, чем 1milisecond (и проблемные запросы медленнее, чем это), это достаточно точно. Только если вы запустите сервер db на удаленном компьютере, это будет не так точно. – marianboda

9

Существует переменную profiling системы MySQL, которая создается в базе данных INFORMATION_SCHEMA для конкретной сессии , Смотрите ниже код:

mysql> set profiling=1; 

Просто выполнить запрос ... выполнение сеанса в запросе будет храниться в INFORMATION_SCHEMA.

mysql> select count(*) from client where broker_id=2; 

После того как запрос будет завершен, просто выполнить эту строку:

mysql> show profiles; 

, который показывает все время выполнения запросов. Просто выполните и сообщите идентификатор запроса, как показано ниже, чтобы получить выполнение/скорость вашего запроса.

mysql> show profile for query 1;

Смежные вопросы