📜  OrientDB-索引

📅  最后修改于: 2020-11-26 05:36:56             🧑  作者: Mango


索引是一个指向数据库中数据位置的指针。索引是一种用于快速定位数据而无需搜索数据库中每条记录的概念。 OrientDB支持四种索引算法,并且每种算法都有几种类型。

四种索引类型是-

SB树索引

它很好地融合了其他索引类型提供的功能。最好将其用于一般用途。它是持久的,可事务的并且支持范围查询。它是默认的索引类型。支持此算法的不同类型的插件是-

  • 唯一-这些索引不允许重复的键。对于复合索引,这是指复合键的唯一性。

  • NOTUNIQUE-这些索引允许重复的键。

  • FULLTEXT-这些索引基于文本的任何单个单词。您可以通过CONTAINSTEXT运算符在查询中使用它们。

  • 字典-这些索引与使用UNIQUE的索引相似,但是在重复键的情况下,它们将现有记录替换为新记录。

哈希指数

它执行速度更快,磁盘使用率非常低。它是持久的,可事务的,但不支持范围查询。它的工作方式类似于HASHMAP,这使它在按时查找时更快,并且比其他索引类型消耗更少的资源。支持此算法的不同类型的插件是-

  • UNIQUE_HASH_INDEX-这些索引不允许重复的键。对于复合索引,这是指复合键的唯一性。

  • NOTUNIQUE_HASH_INDEX-这些索引允许重复的键。

  • FULLTEXT_HASH_INDEX-这些索引基于文本的任何单个单词。您可以通过CONTAINSTEXT运算符在查询中使用它们。

  • DICTIONARY_HASH_INDEX-这些索引与使用UNIQUE_HASH_INDEX的索引相似,但是在键重复的情况下,它们会将现有记录替换为新记录。

Lucene全文索引

它提供了良好的全文索引,但不能用于索引其他类型。它是持久的,可事务的,并且支持范围查询。

Lucene空间指数

它提供了良好的空间索引,但不能用于索引其他类型。它是持久的,可事务的,并且支持范围查询。

创建索引

创建索引是在特定架构上创建索引的命令。

以下语句是创建索引的基本语法。

CREATE INDEX  [ON  (prop-names)]  [] 
[METADATA {}]

以下是上述语法中有关选项的详细信息。

<名称> -定义索引的逻辑名称。您还可以使用表示法创建绑定到架构属性的自动索引。 使用架构的类,而使用在类中创建的属性。

-提供您要创建要索引的自动索引的类的名称。此类必须存在于数据库中。

-提供要自动索引建立索引的属性列表。这些属性必须已经存在于架构中。

-提供您要创建的索引的算法和类型。

-为可选键类型提供自动索引。

-提供JSON表示。

尝试使用以下查询来创建绑定到用户sales_user的属性“ ID”的自动索引。

orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE

如果上面的查询成功执行,您将获得以下输出。

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

查询索引

您可以使用选择查询来获取索引中的记录。

尝试使用以下查询来检索名为“ 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 

其中, <名称>提供要删除的索引的名称。

尝试使用以下查询删除用户sales_user的名为“ ID”的索引。

DROP INDEX sales_users.Id 

如果上面的查询成功执行,您将获得以下输出。

Index dropped successfully