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)はヒント・メカニズムを提供していないことに注意してください。