B-tree индекс
Тип индекса по умолчанию в PostgreSQL. Подходит для операций =, <, >, BETWEEN, LIKE 'prefix%'.
CREATE INDEX ON table USING btree (column); -- btree по умолчаниюОбъяснение
Пример
-- B-tree хорош для:
CREATE INDEX ON orders (created_at); -- диапазон дат
CREATE INDEX ON users (email); -- точное совпадение
-- GIN для массивов:
CREATE INDEX ON articles USING gin (tags);Связанные термины
Анекдоты по теме
— Что общего у поиска иголки в стоге сена и SELECT без индекса? — И то и другое занимает вечность. Только в базе стог сена — это миллион строк.
Индекс говорит таблице: — Милая, ты знаешь, я тебя ускоряю в 1000 раз! Таблица (тяжело вздыхая): — А я из-за тебя при каждой вставке торможу. Ты меня перестраиваешь. Мы в toxic relationship. Индекс: — Ничего, я кластерный. Без меня ты вообще куча мусора на диске.
— Что такое CLUSTER в PostgreSQL? — Физическая перезапись таблицы по порядку индекса. CLUSTER orders USING orders_created_at_idx; — После этого строки физически упорядочены по created_at. — Зачем? — Range queries по дате работают быстрее — меньше random I/O. — Минус? — Не поддерживается автоматически. Новые строки вставляются в случайном порядке.