このトピックでは、グラフデータのクエリパフォーマンスを向上させるために、リレーショナルデータベースでさまざまな種類のインデックスを作成する方法について説明します。
前提条件
インデックスを作成する前に、高い権限を持つアカウントを使用して ganos_graph 拡張機能をインストールする必要があります。
CREATE EXTENSION IF NOT EXISTS ganos_graph;インストール中に ERROR: invalid extension name: "ganos_graph" などのエラーが発生した場合は、お問い合わせください。
インデックスを作成する
ID インデックス
ID インデックスは、ノード間の関係を走査するクエリの最適化に不可欠です。
使用する場合
接続されているすべてのノードを見つけるなど、関係パターンに一致するクエリの速度を上げるために、ID インデックスを作成します。
MATCH ()-[]->()構文
age_create_id_index 関数を使用して、グラフに ID インデックスを作成します。
SELECT age_create_id_index(<graph_name>, <is_unique>);パラメータ
パラメータ | 説明 | 必須 |
| グラフの名前。 | はい |
| (オプション) インデックス付きの値が一意である必要があるかどうかを指定します。 | いいえ |
例
SELECT age_create_id_index('my_graph');GIN インデックス
汎用転置インデックス (GIN) は、プロパティに基づいてノードを検索するクエリに非常に効果的です。
使用する場合
特定のラベルとプロパティ値でノードを照合するクエリを最適化するために、GIN インデックスを作成します。
MATCH (:Label {property: value})構文
age_create_gin_index 関数を使用して、グラフに GIN インデックスを作成します。
SELECT age_create_gin_index('<graph_name>')パラメータ
パラメータ | 説明 | 必須 |
| グラフの名前。 | はい |
例
SELECT age_create_gin_index('my_graph');プロパティ インデックス
プロパティ インデックス (多くの場合、B ツリー インデックス) は、WHERE 句の特定のプロパティ値でノードをフィルタリングするクエリの高速化に最適です。
使用する場合
最初にパターンに一致させ、次にプロパティ値に基づいて結果をフィルタリングするクエリの速度を上げるために、プロパティ インデックスを作成します。
MATCH (o:Label)-[]->()
WHERE o.property = value構文
age_create_prop_index 関数を使用して、グラフにプロパティ インデックスを作成します。
SELECT age_create_prop_index('<graph_name>','<tag_name>','<property_name>')パラメータ
パラメータ | 説明 | 必須 |
| グラフの名前。 | はい |
| プロパティを含むラベルの名前。 | はい |
| インデックスを作成するプロパティの名前。 | はい |
例
SELECT age_create_prop_index('my_graph','my_label', 'name');