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);
Связанные термины
Анекдоты по теме
В баре сидит DBA. К нему подходит молодой разработчик: — Я написал запрос на 500 строк. Там 12 уровней вложенных подзапросов, кросс-джойн на 8 таблиц, оконные функции внутри WHERE, а потом GROUP BY на хэш-таблицу с миллиардом строк. Он выполняется 3 дня. Как оптимизировать? DBA, не поднимая глаз от виски: — Очень просто. Пиши: TRUNCATE TABLE career_results. И иди в менеджеры.
Разработчик пишет: SELECT * FROM a JOIN b ON a.id = b.a_id JOIN c ON b.id = c.b_id JOIN d ON c.id = d.c_id JOIN e ON d.id = e.d_id JOIN f ON e.id = f.e_id DBA: ты только что создал цепочку из 6 JOIN. Разработчик: и что? DBA: надеюсь, у тебя везде есть индексы.
— B-tree, Hash, GIN, GiST, BRIN — как выбрать? — B-tree: всё что угодно, сравнения <, >, =. По умолчанию. — Hash: только = (редко нужен). — GIN: массивы, JSONB, full-text. — GiST: геометрия, диапазоны. — BRIN: огромные таблицы с физически упорядоченными данными (даты логов).