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

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