CREATE INDEX¶
DDL-команда CREATE INDEX используется для создания индекса.
Синтаксис¶
Параметры¶
- UNIQUE — ограничение для создания уникального индекса
Примечание
Это ограничение доступно только для индекса TREE по колонкам ключа шардирования.
- INDEX — имя индекса. Соответствует правилам имен для всех объектов в кластере
Имя индекса должно быть уникальным в рамках кластера!
-
IF NOT EXISTS — позволяет избежать ошибки в случае, если такой индекс в кластере уже есть
-
TABLE — имя таблицы. Соответствует правилам имен для всех объектов в кластере
- USING — применяемый тип индекса:
TREE,HASH,RTREE,BITSET
Типы индексов
- TREE (
vinyl,memtx) — универсальный и наиболее предпочтительный тип индекса. Поддерживает поиск по компонентам ключа. Характеристики:- уникальный
- неуникальный
- первичный
- HASH (
memtx) — присутствует для обратной совместимости. Характеристики:- уникальный
- первичный
- RTREE (
memtx) — многомерный индекс, поддерживающий до 20 измерений. Используется, в частности, для индексирования пространственной информации. Характеристики:- неуникальный
- BITSET (
memtx) — используется для поиска по битовым маскам. Характеристики:- неуникальный
-
COLUMN — имя колонки. Соответствует правилам имен для всех объектов в кластере
Для каждой колонки индекса
TREEможно указать порядок сортировки:ASC(по возрастанию) илиDESC(по убыванию). Если порядок не указан, используетсяASC. Например,(id DESC, name ASC). Указанный порядок определяет направление соответствующей части физического индекса. Для индексовHASH,RTREEиBITSETявный порядок сортировки не поддерживается. * BLOOM_FPR (vinyl) — вероятность ложноположительного срабатывания фильтра Блума * RUN_SIZE_RATIO (vinyl) — соотношение между размерами разных уровней в LSM-дереве * PAGE_SIZE (vinyl) — размер страницы в байтах, используемой для операций чтения и записи на диск * RANGE_SIZE (vinyl) — максимальный размер LSM-поддерева по умолчанию в байтах * RUN_COUNT_PER_LEVEL (vinyl) — максимальное количество файлов на уровне в LSM-дереве * DIMENSION — размерность индекса RTREE * DISTANCE — способ определения расстояния в индексе RTREE:EUCLID,MANHATTAN* HINT — оптимизация для индекса TREE: *TRUE— индекс работает быстрее *FALSE— размер индекса уменьшается вдвое * COMPRESSION_LEVEL (vinyl) — уровень сжатия данных в индексе. Применяется Zstd со шкалой уровней в диапазоне от-7до22. По умолчанию используется уровень сжатия3. Значение0является служебным и означает "использовать сжатие по умолчанию" * WAIT APPLIED — при использовании этого параметра контроль пользователю будет возвращен только после того как данная операция будет применена либо во всем кластере (GLOBALLY), либо в рамках текущего инстанса (LOCALLY) * TIMEOUT — интервал времени, за который Picodata пытается создать индекс. Если времени не хватило и вернулась ошибка, то или индекс не успел создаться, или создался, но нам не хватило времени получить об этом подтверждение. Чтобы проверить статус индекса, можно повторить еще раз команду его создания. Если индекс создан, то в результате вернется нуль строк. Если же индекс не был создан, то вернется одна строка. Если параметр не указан, используется значение системного параметраsql_ddl_timeout(по умолчанию 86400 секунд).
См. также:
Требуемые привилегии¶
Данная команда требует привилегии CREATE INDEX.
См. также:
Примеры¶
Подготовка тестового окружения
Примеры использования команд включают в себя запросы к тестовым таблицам.
CREATE INDEX product_quantity
ON deliveries
USING TREE
(product ASC, quantity DESC)
WITH (
HINT = true,
BLOOM_FPR = 0.05,
RUN_SIZE_RATIO = 3.5,
PAGE_SIZE = 8192,
RANGE_SIZE = 1073741824,
RUN_COUNT_PER_LEVEL = 2
)
OPTION (
TIMEOUT = 3.0
);