Orientdb 简明教程

OrientDB - Indexes

Index 是指向数据库中数据位置的指针。 Indexing 是一个概念,用于快速找到数据而无需搜索数据库中的每条记录。OrientDB 支持四种索引算法和其中的若干类型。

四种索引类型是:

SB-Tree Index

它提供了一种从其他索引类型中获得的良好功能组合。最好将其用于常规实用工具。它耐用,可进行事务处理并支持范围查询。它是默认索引类型。支持此算法的不同类型插件包括:

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

  2. NOTUNIQUE - 这些索引允许重复键。

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

  4. DICTIONARY - 这些索引类似于使用 UNIQUE 的索引,但对于重复键,它们会用新记录替换现有记录。

Hash Index

它的性能更快,并且磁盘占用量非常小。它耐用、可进行事务处理,但不支持范围查询。它的工作原理类似于 HASHMAP,这使得它在点查找方面更快速并且比其他索引类型消耗更少的资源。支持此算法的不同类型插件包括:

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

  2. NOTUNIQUE_HASH_INDEX - 这些索引允许重复键。

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

  4. DICTIONARY_HASH_INDEX - 这些索引类似于使用 UNIQUE_HASH_INDEX 的索引,但在重复键的情况下,它们会用新记录替换现有记录。

Lucene Full Text Index

它提供了良好的全文索引,但不能用于对其他类型进行索引。它耐用、可进行事务处理并支持范围查询。

Lucene Spatial Index

它提供了良好的空间索引,但不能用于对其他类型进行索引。它耐用、可进行事务处理并支持范围查询。

Creating Indexes

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

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

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 表示。

Example

尝试以下查询以创建自动索引,该索引绑定到用户 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)

Querying Indexes

可以使用 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 Indexes

如果要删除特定索引,可以使用此命令。此操作不会删除链接记录。

以下陈述是对一个索引进行删除的基本语法。

DROP INDEX <name>

<name> 提供要删除的索引的名称。

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

DROP INDEX sales_users.Id

如果成功执行了以上查询,您会获得以下输出。

Index dropped successfully