今日の初めに、パフォーマンスの低いクエリについて開発者と協力していました。このクエリは大きくて複雑で、最初はパフォーマンスの問題がどこにあるのかを見つけるのは大変な作業のように見えました。 Explain Planを使用すると、コストを使用して、大規模で複雑なクエリのパフォーマンスの問題点を絞り込むことができる場合があります。
このクエリのExplainPlanを見ると、全体的なコストがかなり高いことがわかります。
詳細を見ると、DETAIL_RECORDテーブルの全表スキャン(FTS)のコストが51018と高いことがわかります。FTSの高コストが計画にどのように伝播するかに注目してください。このFTSを超えるすべての操作は、この単一テーブルアクセスのコストが高いため、コストが高くなります。 CIMS_POLICIES_TO_PROCESSテーブルへのアクセスは比較的低コストですが、HASH JOIN操作は、DETAIL_RECORDテーブルへのアクセスコストが高いためにのみ高コストを受け取ります。
全体的なコストは、このテーブルにアクセスするためのコストよりもわずかに高くなります。この表のFTSが、分析対象のこのクエリの問題点の最大の原因であることは明らかです。
このようにExplainPlanのコストを確認することで、パフォーマンスの問題を最も引き起こしている非常に複雑なクエリの1つの領域にすばやく焦点を当てることができました。ここでコスト分析を行わなければ、以下のクエリのどの部分が問題を引き起こしているのかを判断するのは大変な作業でした。