Анализ медленных запросов в MySQL. EXPLAIN.

Небольшой разбор синтаксиса инструкции EXPLAIN в MySQL. EXPLAIN используется для анализа медленных запросов.

Если перед оператором SELECT стоит ключевое слово EXPLAIN, то MySQL выведет данные о том, как будет проведена выборка и отобразит полную информацию о методе и порядке связывания таблиц.  EXPLAIN поможет выяснить — стоит ли снабдить исследуемые таблицы индексами (чтобы запросы тратили меньше ресурсов). и проверить, насколько удачно существующие ключи связывают таблицы.

Пример:

Особое внимание — на колонку key, так как в ней должно быть название индекса который использовался Mysql для данной выборки. Колонка rows отображает количество обработанных строк, которое было обработано за данный запрос. Значение должно находится в пределах десятков или нескольких сотен.

Ещё один пример запроса, где для поиска использовался первичный ключ — PRIMARY , а число обработанных строк — 10.

Пример медленного запроса:

Ключа нет, а количество просмотренных строк = кол-ву полей в таблице — отсюда и большое время выполнения запроса.

В большинстве случаев длительность выполнения запроса достаточно большая из-за отсутствия индекса по искомому полю.

Полный синтаксис и вывод EXPLAIN можно посмотреть тут.

Очень простой пример использования, более сложный пример и улучшение запросов: https://habrahabr.ru/post/211022/