Play IT

EXPLAIN — план запроса

Интерактивное демо «EXPLAIN — план запроса» — раздел Энциклопедия · Данные и разметка.

data-markupencyclopedia

План выполнения SQL

Сравните Seq Scan и поиск по индексу — как EXPLAIN показывает шаги оптимизатора

EXPLAIN SELECT * FROM orders WHERE customer_id = 123;
SCAN TABLE orders — Полное сканирование таблицы (Seq Scan)
Строк просмотрено12
В результате6
Относительная стоимость12 / 12
100%

Шаги плана (opcode)

  • OpenRead
    Открыть таблицу orders для чтения
  • Rewind
    Указатель в начало таблицы
  • Column + Ne
    Сравнить customer_id с 123
  • ResultRow
    Строка подходит — в результат
  • Next
    Следующая строка (цикл)
  • Halt
    Строки закончились

Таблица orders (полное сканирование)

1101ООО Альфа12000 ₽
2123Иванов И.4500 ₽
3205Петров П.8900 ₽
4123Иванов И.2100 ₽
588Сидоров С.15600 ₽
6123Иванов И.7800 ₽
7301Козлова К.3200 ₽
8123Иванов И.990 ₽
9123Иванов И.5400 ₽
1044Никитин Н.1100 ₽
11123Иванов И.6700 ₽
12177Орлова О.4300 ₽

Без индекса каждая строка проверяется — стоимость растёт линейно с размером таблицы.