Индекс — это указатель, который указывает на местоположение данных в базе данных. Индексирование — это концепция, используемая для быстрого поиска данных без необходимости поиска каждой записи в базе данных. 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
Если приведенный выше запрос выполнен успешно, вы получите следующий вывод.