EXPLAIN в Mysql

Ігор Грегорченко

Для анализа медленных запросов в Mysql используется инструкция EXPLAIN:
EXPLAIN [запрос]

Пример анализа запроса, использующего индекс:
EXPLAIN select * from users where email = 'golotyuk@gmail.com';

+----+-------------+-------+-------+---------------+-------+---------+-------+------+-------+
| id | select_type | table | type  | possible_keys | **key**   | key_len | ref   | **rows** | Extra |
+----+-------------+-------+-------+---------------+-------+---------+-------+------+-------+
|  1 | SIMPLE      | users | const | email         | **email** | 767     | const |    **1** |       |
+----+-------------+-------+-------+---------------+-------+---------+-------+------+-------+

## Значение в колонке rows = 1, что хорошо

Внимание стоит обратить на колонку key – в ней должно быть название индекса, который использует Mysql для выборки.
Колонка rows покажет количество обработанных строк (должно быть очень маленьким – десятки…сотни).

Пример EXPLAIN для медленного запроса:
EXPLAIN select * from users where email like '%golotyuk%';

+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref  | rows | Extra       |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+
|  1 | SIMPLE      | users | ALL  | NULL          | ***NULL*** | NULL    | NULL | ***2154*** | Using where |
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

Как видим, индекса нет и количество обработанных строк очень большое.
В указанном примере индексы не помогут, т.к. используется LIKE с фильтром справа и слева.
Однако в большинстве случаев, проблема всегда связана с отсутствием индексов.

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны проксиЧто такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024
Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложениеЧто такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024
Как создать игру на телефоне: программирование с помощью конструктораКак создать игру на телефоне: программирование с помощью конструктора

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024
Google Bard: эффективный аналог ChatGPTGoogle Bard: эффективный аналог ChatGPT

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024
Скрипт и программирование: что это такое простыми словамиСкрипт и программирование: что это такое простыми словами

Скрипт и программирование: что это такое простыми словами

Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…

12.11.2024
Дедлайн в разработке: что это такое простыми словамиДедлайн в разработке: что это такое простыми словами

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024