Ответ
Оператор EXPLAIN (или EXPLAIN ANALYZE в PostgreSQL) возвращает план выполнения запроса. Ключевые поля в выводе MySQL/ MariaDB:
id: Уникальный идентификатор каждого шага в плане выполнения.select_type: Тип операцииSELECT(например,SIMPLE,PRIMARY,SUBQUERY,DERIVED).table: Имя таблицы, к которой относится строка вывода.partitions: Какие разделы (partitions) были затронуты.type: Критически важное поле — тип соединения или доступа к таблице. ОтALL(полное сканирование) доconst/system(по уникальному ключу).ALL: Наихудший вариант, сканирование всех строк.index: Сканирование всего индекса.range: Сканирование диапазона индекса.ref/eq_ref: Поиск по не-уникальному/уникальному индексу.const: Поиск по первичному или уникальному ключу, возвращает не более одной строки.
possible_keys: Какие индексы теоретически могут быть использованы для этой таблицы.key: Фактически выбранный оптимизатором индекс.key_len: Длина используемой части ключа индекса (в байтах).ref: Какие столбцы или константы сравниваются с индексом (key).rows: Оценочное количество строк, которое должно быть проверено.filtered: Примерный процент строк, которые будут отфильтрованы условиемWHERE.Extra: Дополнительная информация о том, как выполняется запрос (например,Using where,Using index,Using temporary,Using filesort).
Пример для MySQL:
EXPLAIN SELECT * FROM orders WHERE customer_id = 100 AND status = 'shipped';
Результат может показать, используется ли индекс по customer_id, сколько строк примерно будет просмотрено (rows) и не пришлось ли делать временную таблицу или файловую сортировку (Extra).