1. ホーム
  2. sql

[解決済み] クエリの説明プランはどのように解釈するのですか?

2023-04-07 02:23:37

質問

SQL文がどのように実行されているかを理解しようとするとき、説明計画を見ることが推奨されることがあります。説明計画を解釈する(意味を理解する)には、どのようなプロセスを経るべきでしょうか。何が、quot;ああ、これは見事に動作していますね、quot;ああ、いいえ、それは正しくありません、quot。

どのように解決するのか?

フルテーブルスキャンは悪く、インデックスアクセスは良いというコメントを見るたびに、私は身震いします。フル テーブル スキャン、インデックス範囲スキャン、高速フル インデックス スキャン、入れ子ループ、マージ結合、ハッシュ結合などは、意味のある結論に達するために、分析者が理解し、データベース構造の知識およびクエリの目的と組み合わせなければならないアクセス機構にすぎません。

フル スキャンは、データ セグメント (テーブルまたはテーブル (サブ) パーティション) のブロックの大部分を読み取る最も効率的な方法であり、しばしばパフォーマンスの問題を示すことがありますが、それは、それがクエリの目的を達成するための効率的なメカニズムであるかどうかというコンテキストにおいてのみです。データ ウェアハウスおよび BI の専門家として言えば、パフォーマンスに関する私の一番の警告は、インデックス ベースのアクセス方法とネストされたループです。

ですから、説明計画の読み方のメカニズムについては、Oracleのドキュメントが良いガイドとなります。 http://download.oracle.com/docs/cd/B28359_01/server.111/b28274/ex_plan.htm#PFGRF009

パフォーマンスチューニングガイドも熟読してください。

これは、クエリのさまざまな段階におけるカーディナリティの推定値と実行中に経験した実際のカーディナリティを比較するために、説明計画を使用することができるテクニックです。Wolfgang Breitlingがこの手法の作者だと思います。

要するに、アクセス機構を理解しなさい。データベースを理解する。クエリの意図を理解する。経験則を避ける。