Индексы¶
Индексы помогают быстро находить данные, соответствующие условиям запроса. Когда в таблице создаётся индекс по одному или нескольким столбцам, запросы, использующие эти столбцы в качестве условий, сканируют лишь часть данных таблицы, что повышает эффективность выполнения. StarRocks предоставляет различные типы индексов, которые можно разделить на две категории:
Системные встроенные индексы, автоматически создаваемые системой: Prefix index, Ordinal index и ZoneMap index.
Пользовательские индексы, создаваемые вручную: Bitmap index и Bloom Filter index.
Встроенные индексы¶
Prefix-индекс¶
Prefix‑индекс автоматически генерируется при записи данных. При загрузке данные сортируются по заданному sort key, а каждые 1024 строки образуют один логический блок. В таблицу Prefix‑индекса добавляется запись, содержащая значения столбцов sort key первой строки в этом блоке. Если условие фильтрации запроса соответствует префиксу Prefix‑индекса, система быстро находит удовлетворяющие строки и уменьшает объём сканирования, что значительно ускоряет запросы.
Ordinal-индекс¶
На уровне хранения StarRocks использует колоночное хранение. Данные столбца размещаются по data pages (обычно 64 * 1024 байта; data_page_size = 64 * 1024). При создании data page одновременно добавляется запись Ordinal‑индекса со сведениями, такими как стартовый номер строки страницы. Таким образом, Ordinal‑индекс позволяет находить физический адрес страницы данных по номеру строки.

ZoneMap-индекс¶
ZoneMap‑индекс хранит статистики по каждому блоку данных: Min, Max, HasNull и HasNotNull. Во время запроса StarRocks быстро определяет, можно ли отбросить блок на основе его статистик, сокращая объём сканирования и повышая скорость.
Каждый блок может быть сегментом или страницей столбца. Соответственно существуют два типа ZoneMap‑индексов: на уровень Segment и на уровень data page столбца.
Индексы, создаваемые вручную¶
Если столбец в условии запроса не входит в префиксные поля, вы можете создать индекс на этот столбец с учётом характеристик данных и запросов, чтобы повысить эффективность.
Bitmap-индекс¶
Bitmap‑индексы подходят для запросов по столбцам с высокой кардинальностью или по комбинациям нескольких столбцов с низкой кардинальностью. Они обеспечивают мощную фильтрацию, отбрасывая не менее 999 строк из 1000.
Bloom filter индекс¶
Bloom Filter индекс подходит для столбцов с относительно высокой кардинальностью (например, ID), но возможны ложноположительные срабатывания.
N-Gram bloom filter индекс¶
N‑gram Bloom Filter — частный случай Bloom Filter индекса, обычно ускоряющий запросы LIKE и функции ngram_search и ngram_search_case_insensitive.
Полнотекстовый инвертированный индекс¶
Полнотекстовый инвертированный индекс быстро находит строки, соответствующие ключевым словам, ускоряя полнотекстовый поиск.
Vector‑индекс¶
Vector‑индекс позволяет выполнять поиск approximate nearest neighbor search (ANNS) в StarRocks.