クエリプランの分析
EXPLAIN コマンドを実行して、クエリプランを取得します。
クエリプランを分析する前に、クエリプランを読む方法の知識が必要です。クエリプランを読む方法がわからない場合、次に進む前に「クエリプランの作成と解釈」を参照することをお勧めします。
クエリプランにより提供されるデータを分析するには、以下の手順を実行します。
-
最もコストが高い手順を特定します。残りの手順を進める際、それらの手順の最適化に集中してください。
-
結合の種類を参照します。
-
ネステッドループ: この結合は通常、結合条件が省略されたために発生します。推奨される解決策については、「Nested Loop」を参照してください。
-
ハッシュおよびハッシュ結合: ハッシュ結合は、結合列が分散キーでもソートキーでもないテーブルを結合するときに使用されます。推奨される解決策については、「ハッシュ結合」を参照してください。
-
マージ結合: 変更は必要ありません。
-
-
どのテーブルが内部結合に使用され、どのテーブルが外部結合に使用されるのかに注目してください。クエリエンジンは通常、内部結合に小さいテーブルを選択し、外部結合に大きいテーブルを選択します。統計が古いと思われる場合、このような選択は行われません。推奨される解決策については、「テーブル統計がないか古い」を参照してください。
-
高コストのソート操作があるかどうかを調べます。そのような操作がある場合、「未ソート行または正しくソートされていない行」で推奨される解決策を参照してください。
-
高コストの操作が存在する以下のブロードキャスト演算子を探します。
-
DS_BCAST_INNER: テーブルがすべてのコンピューティングノードにブロードキャストされていることを示します。これは、小さなテーブルなら問題ありませんが、大きなテーブルには適しません。
-
DS_DIST_ALL_INNER: すべてのワークロードが 1 つのスライスにあることを示します。
-
DS_DIST_BOTH: 重度の再分散を示します。
これらの状況に推奨される解決策については、「十分最適でないデータ分散」を参照してください。
-