Я настраиваю время SQL-запроса для своего медленного запроса, но каждый раз получаю разное время, поэтому я не могу оценить свое оптимизационное решение.
Например, я запускаю запрос select * from abc where abc.status in (x,y,z) and abc.scale>123;
три раза, и я получаю время результата 5, 11, 9.
Я отключил кеш запросов. Как получить чистую песочницу для настройки медленного запроса?
Другой альтернативой безупречной и незапятнанной среде является многократное выполнение запроса (например, сотни раз) и выполнение статистического анализа результатов. Ключ состоит в том, чтобы изолировать любые совпадающие переменные (выполнение тестов на одной машине, с одним и тем же кодом каркаса и без каких-либо предубеждений при выполнении других задач (сложно, я знаю). Затем вы можете сделать вероятностные выводы относительно того, запрос лучше, чем какой-либо другой (хотя количественная оценка точного улучшения сопряжена с опасностями).
Или вы можете просто использовать EXPLAIN <query>
, который покажет вам план запроса и даст вам очень хорошее представление о том, какой из двух запросов "лучше".
Скорее всего, сервер в фоновом режиме выполняет другие действия. На запросы MySQL очень сильно влияет ввод-вывод, и нарушения в виде других процессов, выполняющих операции ввода-вывода на машине, могут значительно изменить время запроса.
Убедитесь, что вы запускаете это на изолированном сервере, если вам нужны повторяемые тесты.