MySQL EXPLAIN FORMAT=JSON: понять выбор индекса

Категория: Postgresql · Язык: SQL · Обновлено:

EXPLAIN FORMAT=JSON показывает подробный план MySQL-запроса, включая выбранный индекс и оценку строк. Сравните access_type, key и rows, чтобы найти full table scan на большой таблице.

Рабочий пример

SQL
CREATE TABLE orders(id int primary key, customer_id int, created_at date);
CREATE INDEX orders_customer_idx ON orders(customer_id);
EXPLAIN FORMAT=JSON
SELECT id FROM orders WHERE customer_id = 42;

key показывает фактически выбранный индекс, possible_keys — кандидатов, а rows — оценку числа просмотренных строк. Оценка зависит от статистики; после крупных изменений может понадобиться ANALYZE TABLE.

Частый вопрос

Почему key равен null?

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