インデックス は、データベースでのデータ取得操作の速度を向上させるデータ構造です。
Neo4jでは、ラベルが付けられた任意のノードのプロパティにインデックスを作成できます。インデックスを作成すると、Neo4jがインデックスを管理し、データベースが変更されるたびに最新の状態に保ちます。
インデックスを作成するには、CREATE INDEX ON
を使用します 声明。このように:
CREATE INDEX ON :Album(Name)
上記の例では、 Name にインデックスを作成します Album を持つすべてのノードのプロパティ ラベル。
ステートメントが成功すると、次のメッセージが表示されます。
インデックスを作成すると、Neo4jはバックグラウンドでインデックスを作成します。データベースが大きい場合、これには時間がかかる場合があります。
Neo4jがインデックスの作成を完了した場合にのみ、インデックスがオンラインになり、クエリで使用できるようになります。
インデックスを表示
インデックス(および制約)は、(オプションの)データベーススキーマの一部になります。
Neo4jブラウザーでは、:schema
を使用して、すべてのインデックスと制約を確認できます。 コマンド。
次のように入力するだけです:
:schema
インデックスと制約のリストが表示されます:
インデックスのヒント
インデックスが作成されると、関連するクエリを実行するときに自動的に使用されます。
ただし、Neo4jでは、ヒントを使用して1つ以上のインデックスを適用することもできます。 USING INDEX ...
を含めることで、インデックスヒントを作成できます。 クエリで。
したがって、上記のインデックスを次のように適用できます。
MATCH (a:Album {Name: "Somewhere in Time"}) USING INDEX a:Album(Name) RETURN a
複数のヒントを提供することもできます。新しいUSING INDEX
を追加するだけです 適用するインデックスごとに。
インデックスを作成するか、インデックスを作成しないか?
Neo4jがインデックスを作成すると、データベースにデータの冗長コピーが作成されます。したがって、インデックスを使用すると、使用されるディスクスペースが増え、ディスクへの書き込みが遅くなります。
したがって、インデックスを作成するデータ/プロパティを決定する際には、これらの要素を比較検討する必要があります。
一般に、特定のノードに大量のデータがあることがわかっている場合は、インデックスを作成することをお勧めします。また、クエリが返されるまでに時間がかかりすぎる場合は、インデックスを追加すると役立つ場合があります。