OrientDB-インデックス

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

インデックスの4つのタイプは次のとおりです。

SBツリーインデックス

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

  • UNIQUE−これらのインデックスは重複キーを許可しません。複合インデックスの場合、これは複合キーの一意性を指します。

  • NOTUNIQUE −これらのインデックスは重複キーを許可します。

  • FULLTEXT−これらのインデックスは、任意の1単語のテキストに基づいています。あなたはそれらを介してクエリでそれらを使用することができますCONTAINSTEXT オペレーター。

  • DICTIONARY −これらのインデックスは、UNIQUEを使用するインデックスと似ていますが、キーが重複している場合は、既存のレコードが新しいレコードに置き換えられます。

ハッシュインデックス

パフォーマンスが速く、ディスク使用量が非常に少ないです。耐久性があり、トランザクションですが、範囲クエリをサポートしていません。これはHASHMAPのように機能し、時間指定のルックアップで高速になり、他のインデックスタイプよりも少ないリソースを消費します。このアルゴリズムをサポートするさまざまなタイプのプラグインは次のとおりです。

  • UNIQUE_HASH_INDEX−これらのインデックスは重複キーを許可しません。複合インデックスの場合、これは複合キーの一意性を指します。

  • NOTUNIQUE_HASH_INDEX −これらのインデックスは重複キーを許可します。

  • FULLTEXT_HASH_INDEX−これらのインデックスは、任意の1単語のテキストに基づいています。CONTAINSTEXT演算子を使用してクエリで使用できます。

  • DICTIONARY_HASH_INDEX −これらのインデックスはを使用するものと同様です UNIQUE_HASH_INDEX、ただし、キーが重複している場合は、既存のレコードが新しいレコードに置き換えられます。

Luceneフルテキストインデックス

優れたフルテキストインデックスを提供しますが、他のタイプのインデックスには使用できません。耐久性があり、トランザクションであり、範囲クエリをサポートします。

Lucene Spatial Index

優れた空間インデックスを提供しますが、他のタイプのインデックスには使用できません。耐久性があり、トランザクションであり、範囲クエリをサポートします。

インデックスの作成

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

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