Индекс базы данных – вспомогательная структура, которая позволяет СУБД находить нужные строки без просмотра всей таблицы. Индекс хранит значения выбранных столбцов в упорядоченном или хешированном виде со ссылками на строки, подобно предметному указателю в книге.
Виды индексов
- B-дерево – универсальный индекс для равенства, диапазонов и сортировки.
- Хеш-индекс – для точного совпадения.
- GIN и GiST (PostgreSQL) – для полнотекстового поиска, массивов, JSON, геоданных.
- BRIN – компактный индекс для очень больших упорядоченных таблиц.
- Составные, частичные, покрывающие и функциональные индексы.
- Векторные индексы (HNSW, IVF) – для поиска ближайших соседей.
Компромиссы
- Ускоряют чтение, но замедляют вставку и обновление.
- Занимают место на диске и в памяти.
- Лишние индексы вредят производительности.
Как подбирать
Анализировать медленные запросы и планы выполнения, создавать индексы под частые условия фильтрации и соединения, удалять неиспользуемые.