Sobes.tech
Senior
22

Расскажи про индексы в ClickHouse.

Companies where asked
ScoreWarrior

Answer from AI

sobes.tech AI

В ClickHouse индексы работают иначе, чем в традиционных реляционных базах данных. Основные особенности:

  • ClickHouse использует primary key для сортировки данных в партициях, что ускоряет поиск и фильтрацию.
  • Вместо классических B-деревьев применяются sparse indexes — они хранят минимальные и максимальные значения ключей для блоков данных (например, по 64К строк).
  • При выполнении запроса ClickHouse быстро определяет, какие блоки данных могут содержать нужные значения, и читает только их, что значительно ускоряет запросы.
  • Также есть skip indexes (например, minmax, set, bloom filter), которые помогают пропускать ненужные данные при фильтрации.

Пример использования primary key:

CREATE TABLE visits (
    UserID UInt64,
    VisitDate Date,
    Duration UInt32
) ENGINE = MergeTree()
ORDER BY (UserID, VisitDate);

Здесь данные будут отсортированы по UserID и VisitDate, что ускорит запросы с фильтрами по этим полям.

Таким образом, индексы в ClickHouse — это скорее механизмы сортировки и метаданные для пропуска блоков данных, а не классические индексы, как в OLTP-системах.