6.8.10.3 問合せ計画の説明
PgxGraph.explainPgql(String query)
メソッドは、問合せの問合せ計画を把握するために使用されます。このメソッドは、次のメソッドを持つOperation (package oracle.pgx.api)
のインスタンスを返します。
print()
: 操作とその子操作を出力するためgetOperationType()
: 操作のタイプを取得するためgetPatternInfo()
: 操作の文字列表現を取得するためgetCostEstimate()
: 操作のコストを取得するためgetTotalCostEstimate()
: 操作とその子操作のコストを取得するためgetCardinatlityEstimate()
: 予想される結果行数を取得するためgetChildren()
: 子操作にアクセスするため
次のケースについて検討します。
g.explainPgql("SELECT COUNT(*) FROM MATCH (n) -[e1]-> (m) -[e2]-> (o)").print()
\--- GROUP BY GroupBy {"cardinality":"42", "cost":"42", "accumulatedCost":"58.1"}
\--- (m) -[e2]-> (o) NeighborMatch {"cardinality":"3.12", "cost":"3.12", "accumulatedCost":"16.1"}
\--- (n) -[e1]-> (m) NeighborMatch {"cardinality":"5", "cost":"5", "accumulatedCost":"13"}
\--- (n) RootVertexMatch {"cardinality":"8", "cost":"8", "accumulatedCost":"8"}
前述の例では、print()
メソッドを使用して問合せ計画を出力しています。
問合せ計画が最適でない場合、パフォーマンスを向上させるために問合せを書き直せることがよくあります。たとえば、合計実行時間を改善する方法として、SELECT
問合せをUPDATE
およびSELECT
問合せに分割できます。
グラフ・サーバー(PGX)はヒント・メカニズムを提供していないことに注意してください。