Перейти к содержанию

CREATE INDEX

DDL-команда CREATE INDEX используется для создания индекса.

Синтаксис

CREATE UNIQUE INDEX IF NOT EXISTS index ON table USING TREE HASH RTREE BITSET ( column , ) WITH ( BLOOM_FPR RUN_SIZE_RATIO = decimal PAGE_SIZE RANGE_SIZE RUN_COUNT_PER_LEVEL DIMENSION = unsigned DISTANCE = EUCLID MANHATTAN HINT = TRUE FALSE , ) WAIT APPLIED GLOBALLY LOCALLY OPTION ( TIMEOUT = double )

Параметры

  • UNIQUE — ограничение для создания уникального индекса

Примечание

Это ограничение доступно только для индекса TREE по колонкам ключа шардирования.

  • INDEX — имя индекса. Соответствует правилам имен для всех объектов в кластере

Имя индекса должно быть уникальным в рамках кластера!

  • IF NOT EXISTS — позволяет избежать ошибки в случае, если такой индекс в кластере уже есть

  • TABLE — имя таблицы. Соответствует правилам имен для всех объектов в кластере

  • USING — применяемый тип индекса: TREE, HASH, RTREE, BITSET

Типы индексов

  • TREE (vinyl, memtx) — универсальный и наиболее предпочтительный тип индекса. Поддерживает поиск по компонентам ключа. Характеристики:
    • уникальный
    • неуникальный
    • первичный
  • HASH (memtx) — присутствует для обратной совместимости. Характеристики:
    • уникальный
    • первичный
  • RTREE (memtx) — многомерный индекс, поддерживающий до 20 измерений. Используется, в частности, для индексирования пространственной информации. Характеристики:
    • неуникальный
  • BITSET (memtx) — используется для поиска по битовым маскам. Характеристики:
    • неуникальный
  • COLUMN — имя колонки. Соответствует правилам имен для всех объектов в кластере
  • 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 — размер индекса уменьшается вдвое
  • WAIT APPLIED — при использовании этого параметра контроль пользователю будет возвращен только после того как данная операция будет применена либо во всем кластере (GLOBALLY), либо в рамках текущего инстанса (LOCALLY)
  • TIMEOUT — интервал времени, за который Picodata пытается создать индекс. Если времени не хватило и вернулась ошибка, то или индекс не успел создаться, или создался, но нам не хватило времени получить об этом подтверждение. Чтобы проверить статус индекса, можно повторить еще раз команду его создания. Если индекс создан, то в результате вернется нуль строк. Если же индекс не был создан, то вернется одна строка.

См. также:

Примеры

Тестовые таблицы

Примеры использования команд включают в себя запросы к тестовым таблицам.

CREATE INDEX product_quantity
ON deliveries
USING TREE
(product, quantity)
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
);