Учебники

OrientDB — Индексы

Индекс — это указатель, который указывает на местоположение данных в базе данных. Индексирование — это концепция, используемая для быстрого поиска данных без необходимости поиска каждой записи в базе данных. OrientDB поддерживает четыре индексных алгоритма и несколько типов в каждом.

Четыре типа индекса:

SB-Tree Index

Это обеспечивает хорошее сочетание функций, доступных из других типов индексов. Лучше использовать это для общей полезности. Это долговечный, транзакционный и поддерживает диапазон запросов. Это тип индекса по умолчанию. Плагины разных типов, которые поддерживают этот алгоритм:

  • UNIQUE — эти индексы не допускают дублирования ключей. Для составных индексов это относится к уникальности составных ключей.

  • NOTUNIQUE — эти индексы позволяют дублировать ключи.

  • FULLTEXT — эти индексы основаны на любом отдельном слове текста. Вы можете использовать их в запросах через оператор CONTAINSTEXT .

  • СЛОВАРЬ. Эти индексы аналогичны индексам, использующим UNIQUE, но в случае дублирующих ключей они заменяют существующую запись новой записью.

UNIQUE — эти индексы не допускают дублирования ключей. Для составных индексов это относится к уникальности составных ключей.

NOTUNIQUE — эти индексы позволяют дублировать ключи.

FULLTEXT — эти индексы основаны на любом отдельном слове текста. Вы можете использовать их в запросах через оператор CONTAINSTEXT .

СЛОВАРЬ. Эти индексы аналогичны индексам, использующим UNIQUE, но в случае дублирующих ключей они заменяют существующую запись новой записью.

Хэш-индекс

Он работает быстрее и очень легок в использовании диска. Он долговечный, транзакционный, но не поддерживает диапазонные запросы. Он работает как HASHMAP, что делает его более быстрым при точном поиске и потребляет меньше ресурсов, чем другие типы индексов. Плагины разных типов, которые поддерживают этот алгоритм:

  • UNIQUE_HASH_INDEX — эти индексы не допускают дублирования ключей. Для составных индексов это относится к уникальности составных ключей.

  • NOTUNIQUE_HASH_INDEX — эти индексы позволяют дублировать ключи.

  • FULLTEXT_HASH_INDEX — эти индексы основаны на любом отдельном текстовом слове. Вы можете использовать их в запросах через оператор CONTAINSTEXT.

  • DICTIONARY_HASH_INDEX — эти индексы аналогичны индексам, использующим UNIQUE_HASH_INDEX , но в случае дублирования ключей они заменяют существующую запись новой записью.

UNIQUE_HASH_INDEX — эти индексы не допускают дублирования ключей. Для составных индексов это относится к уникальности составных ключей.

NOTUNIQUE_HASH_INDEX — эти индексы позволяют дублировать ключи.

FULLTEXT_HASH_INDEX — эти индексы основаны на любом отдельном текстовом слове. Вы можете использовать их в запросах через оператор CONTAINSTEXT.

DICTIONARY_HASH_INDEX — эти индексы аналогичны индексам, использующим UNIQUE_HASH_INDEX , но в случае дублирования ключей они заменяют существующую запись новой записью.

Lucene Full Text Index

Он обеспечивает хорошие полнотекстовые индексы, но не может использоваться для индексации других типов. Это долговечный, транзакционный и поддерживает диапазон запросов.

Lucene Spatial Index

Он обеспечивает хорошие пространственные индексы, но не может использоваться для индексации других типов. Это долговечный, транзакционный и поддерживает диапазон запросов.

Создание индексов

Создать индекс — это команда для создания индекса для определенной схемы.

Следующее утверждение является основным синтаксисом для создания индекса.

CREATE INDEX <name> [ON <class-name> (prop-names)] <type> [<key-type>] 
[METADATA {<metadata>}]

Ниже приведены подробности об опциях в приведенном выше синтаксисе.

<имя> — определяет логическое имя для индекса. Вы также можете использовать нотацию <class.property> для создания автоматического индекса, привязанного к свойству схемы. <class> использует класс схемы, а <property> использует свойство, созданное в классе.

<class-name> — Предоставляет имя класса, для которого вы создаете автоматический индекс для индексации. Этот класс должен существовать в базе данных.

<prop-names> — Предоставляет список свойств, которые нужно индексировать автоматическим индексом. Эти свойства уже должны существовать в схеме.

<тип> — Предоставляет алгоритм и тип индекса, который вы хотите создать.

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

<метаданные> — предоставляет представление JSON.

пример

Попробуйте следующий запрос, чтобы создать автоматический индекс, привязанный к свойству ‘ID’ пользователя sales_user.

orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

Creating index... 
Index created successfully with 4 entries in 0.021000 sec(s)

Запрос индексов

Вы можете использовать запрос select, чтобы получить записи в индексе.

Попробуйте следующий запрос, чтобы получить ключи индекса с именем ‘indexforId’.

SELECT FROM INDEX:indexforId 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.

----+------+----+----- 
#   |@CLASS|key |rid   
----+------+----+----- 
0   |null  |1   |#11:7 
1   |null  |2   |#11:6 
2   |null  |3   |#11:5 
3   |null  |4   |#11:8 
----+------+----+-----

Drop Index

Если вы хотите удалить определенный индекс, вы можете использовать эту команду. Эта операция не удаляет связанные записи.

Следующее утверждение является основным синтаксисом для удаления индекса.

DROP INDEX <name>

Где <name> предоставляет имя индекса, который вы хотите удалить.

Попробуйте следующий запрос, чтобы удалить индекс с именем ‘ID’ пользователя sales_user.

DROP INDEX sales_users.Id 

Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.