SQL базы данных поддерживают несколько типов индексов, каждый оптимизирован для разных паттернов данных и типов запросов. Два самых распространённых — это B-tree индексы и bitmap индексы.
B-tree (сбалансированное дерево) индекс организует данные в иерархическую, отсортированную древовидную структуру, где каждый узел указывает на дочерние узлы, в итоге приводя к самим данным.
user_id, email, order_date)WHERE age > 30 AND age < 50
WHERE email = 'user@example.com'
ORDER BY и JOINBitmap индекс хранит данные в виде массивов битов, где каждому уникальному значению колонки соответствует отдельный bitmap, показывающий, какие строки содержат это значение.
gender, status, boolean flags)WHERE gender = 'F' AND status = 'active' AND region = 'EU'
| Фактор | B-Tree | Bitmap |
|---|---|---|
| Кардинальность данных | Высокая | Низкая |
| Тип запроса | Диапазон, равенство | Фильтрация по множеству условий |
| Производительность записи | Лучше | Медленнее при обновлениях |
| Типичный вариант использования | OLTP системы | OLAP / хранилища данных |
Выбирай B-tree индекс для транзакционных нагрузок с уникальными или широким диапазоном значений. Выбирай bitmap индекс для аналитических запросов к колонкам с ограниченным числом уникальных значений.
Bitmap индексы наиболее эффективны на колонках с низкой кардинальностью, потому что они используют побитовые операции для эффективного одновременного вычисления нескольких условий, что делает их идеальными для аналитических запросов со сложными WHERE предложениями.
Новый — ещё не проверен сообществом
Вы