索引是一个指向数据库中数据位置的指针。 索引是一种用于快速定位数据而不必搜索数据库中的每条记录的概念。 OrientDB支持四种索引算法和几种类型。
四种类型索引分别是 –
SB-Tree索引
它提供了来自其他索引类型的很好的功能组合。 最好将其用于一般效用。 它是耐用的,事务性的并且支持范围查询。 它是默认的索引类型。 支持这种算法的不同类型的插件是 –
UNIQUE
– 这些索引不允许重复键。对于复合索引,这指的是复合键的唯一性。NOTUNIQUE
– 这些索引允许重复键。FULLTEXT
– 这些索引基于任何单个文字。可以通过CONTAINSTEXT
运算符在查询中使用它们。DICTIONARY
– 这些索引与使用UNIQUE
的索引类似,但在重复键的情况下,它们会用新记录替换现有记录。
散列索引
它执行速度更快,磁盘使用率非常低。 它是持久的,事务性的,但不支持范围查询。 它像HASHMAP一样工作,这使得它在准时查找中更快,并且比其他索引类型消耗更少的资源。 支持这种算法的不同类型的插件是 –
UNIQUE_HASH_INDEX
– 这些索引不允许重复键。 对于复合索引,这指的是复合键的唯一性。NOTUNIQUE_HASH_INDEX
– 这些索引允许重复键。FULLTEXT_HASH_INDEX
– 这些索引基于任何单个文本字。可以通过CONTAINSTEXT
运算符在查询中使用它们。DICTIONARY_HASH_INDEX
– 这些索引与使用UNIQUE_HASH_INDEX
的索引类似,但在重复键的情况下,它们会用新记录替换现有记录。
Lucene全文索引
它提供了很好的全文索引,但不能用于索引其他类型。 它是持久的,事务性的,并且支持范围查询。
Lucene空间索引
它提供了很好的空间索引,但不能用于索引其他类型。 它是持久的,事务性的,并且支持范围查询。
创建索引
创建索引是在特定模式上创建索引的命令。
以下语句是创建索引的基本语法。
CREATE INDEX <name> [ON <class-name> (prop-names)] <type> [<key-type>]
[METADATA {<metadata>}]
以下是有关上述语法中选项的详细信息。
<name>
– 定义索引的逻辑名称。还可以使用<class.property>
表示法创建绑定到模式属性的自动索引。<class>
使用模式类,<property>
使用在类中创建的属性。<class-name>
– 提供要创建索引的自动索引的类的名称。该类必须存在于数据库中。<prop-names>
– 提供希望自动索引建立索引的属性列表。这些属性必须已经存在于模式中。<type>
– 提供您想要创建的索引的算法和类型。<key-type>
– 提供具有自动索引的可选键类型。<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)
查询索引
可以使用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 <name>
其中<name>
为指定想要删除的索引的名称。
尝试以下查询以删除sales_user
的名为’ID’的索引。
DROP INDEX sales_users.Id
如果上述查询成功执行,您将得到以下输出。
Index dropped successfully