Play IT

Визуализация индексов БД

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

data-markupencyclopedia

Визуализатор индексов БД

Сравните Index Scan и Seq Scan: когда B-tree помогает, а когда оптимизатор читает всю таблицу

SELECT * FROM users WHERE email = 'boris@corp.ru';
Index ScanПоиск по индексу (B-tree)
Строк прочитано2
Строк в результате1
Относительная стоимость2 / 12

Таблица users (heap)

1anna@corp.ru28
2boris@corp.ru34
3clara@mail.com22
4dmitry@corp.ru41
5elena@corp.ru29
6foma@mail.com19
7gala@corp.ru36
8ivan@corp.ru31
9julia@mail.com27
10kira@corp.ru45
11leon@corp.ru33
12mila@mail.com24

Индекс idx_email (email) (отсортированные ключи)

anna@corp.ru→ id 1
boris@corp.ru→ id 2
clara@mail.com→ id 3
dmitry@corp.ru→ id 4
elena@corp.ru→ id 5
foma@mail.com→ id 6
gala@corp.ru→ id 7
ivan@corp.ru→ id 8
julia@mail.com→ id 9
kira@corp.ru→ id 10
leon@corp.ru→ id 11
mila@mail.com→ id 12

Индекс отсортирован по ключу — СУБД пропускает нерелевантные страницы таблицы.

Стоимость записи (INSERT)

Индекс ускоряет чтение, но каждая вставка обновляет дерево ключей

Таблица
Индекс ×1

Каждый INSERT обновляет 1 индекс(а) — запись замедляется. Относительная стоимость INSERT: 3 (без индекса — 1).