Orientdb-indexes

提供:Dev Guides
移動先:案内検索

OrientDB-インデックス

  • インデックス*は、データベース内のデータの場所を指すポインタです。 *インデックス作成*は、データベース内のすべてのレコードを検索することなく、データをすばやく見つけるために使用される概念です。 OrientDBは、4つのインデックスアルゴリズムとそれぞれの中でいくつかのタイプをサポートしています。

インデックスの4つのタイプは-

SBツリーインデックス

他の種類のインデックスから利用可能な機能の良い組み合わせを提供します。 これを一般的なユーティリティに使用することをお勧めします。 耐久性があり、トランザクションに対応し、範囲クエリをサポートしています。 これはデフォルトのインデックスタイプです。 このアルゴリズムをサポートするさまざまなタイプのプラグインは-

  • 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 Spatial 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表現を提供します。

次のクエリを試して、ユーザー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 <name>

ここで、 <name> は削除するインデックスの名前を提供します。

次のクエリを試して、ユーザーsales_userの「ID」という名前のインデックスを削除します。

DROP INDEX sales_users.Id

上記のクエリが正常に実行されると、次の出力が得られます。

Index dropped successfully