Ответ
Гранулярный индекс в ClickHouse — это структура данных, которая ускоряет поиск, работая не с отдельными строками, а с группами (гранулами).
Особенности:
- Данные хранятся блоками (гранулами) по 8192 строк (по умолчанию)
- Индекс содержит метаданные о гранулах (мин/макс значения, смещения)
- Позволяет пропускать целые гранулы при фильтрации
Пример работы:
-- Создаем таблицу с индексом
CREATE TABLE logs (
timestamp DateTime,
message String,
INDEX idx_timestamp timestamp TYPE minmax GRANULARITY 3
) ENGINE = MergeTree()
ORDER BY timestamp;
При запросе WHERE timestamp > now() - INTERVAL 1 DAY ClickHouse пропустит гранулы, где максимальное значение timestamp меньше нужной даты.