Я видел что-то из статьи "плана выполнения":
10 rows fetched in 0.0003s (0.7344s)
(ссылка: http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/)
Как получается, что показаны 2 продолжительности?Что делать, если у меня еще нет большого набора данных.Например, если у меня есть только 20, 50 или даже всего 100 записей, я не могу точно измерить, насколько быстрее 2 разных оператора SQL сравниваются по скорости в реальной жизни?Другими словами, для точного сравнения производительности этих двух разных операторов SQL должно быть не менее сотен тысяч записей или даже миллиона записей?
Лучший способ проверить и сравнить производительность операций часто (если не всегда!) для работы с реалистичным набором данных.
Если вы планируете иметь миллионы строк, когда ваше приложение находится в рабочем состоянии, тогда вам следует протестировать миллионы строк прямо сейчас, а не только дюжину!
Пара советов:
select SQL_NO_CACHE ...
select ...
EXPLAIN
По первому вопросу:
X строк (ы) выбрано в Y s (Z s)
X = количество строк (конечно); Y = время, которое потребовалось серверу MySQL для выполнения запроса (синтаксический анализ, получение, отправка); Z = время, которое результирующий набор провел в пути от сервера к клиенту;
(Источник: http://forums.mysql.com/read.php?108,51989,210628#msg-210628)
По второму вопросу вы никогда не узнаете, как выполняется запрос, если не протестируете с реалистичным количеством записей. Вот хороший пример того, как правильно провести бенчмаркинг: http://www.mysqlperformanceblog.com/2010/04/21/mysql-5-5-4-in-tpcc-like-workload/
Этот блог в целом, а также книга " High Performance MySQL " - золотая жила.
Обычно, когда показывается 2 раза, один - это время ЦП, а другой - время настенных часов. Я не могу вспомнить, что есть что, но похоже, что первое - это время ЦП, а второе - истекшее время.