クエリプランの分析 - Amazon Redshift

クエリプランの分析

クエリプランを分析する前に、クエリプランを読む方法の知識が必要です。クエリプランを読む方法がわからない場合、次に進む前に「クエリプラン」を参照することをお勧めします。

EXPLAIN コマンドを実行して、クエリプランを取得します。クエリプランにより提供されるデータを分析するには、以下の手順を実行します。

  1. 最もコストが高い手順を特定します。残りの手順を進める際、それらの手順の最適化に集中してください。

  2. 結合の種類を参照します。

    • ネステッドループ: この結合は通常、結合条件が省略されたために発生します。推奨される解決策については、「Nested Loop」を参照してください。

    • ハッシュおよびハッシュ結合: ハッシュ結合は、結合列が分散キーでもソートキーでもないテーブルを結合するときに使用されます。推奨される解決策については、「ハッシュ結合」を参照してください。

    • マージ結合: 変更は必要ありません。

  3. どのテーブルが内部結合に使用され、どのテーブルが外部結合に使用されるのかに注目してください。クエリエンジンは通常、内部結合に小さいテーブルを選択し、外部結合に大きいテーブルを選択します。統計が古いと思われる場合、このような選択は行われません。推奨される解決策については、「テーブル統計がないか古い」を参照してください。

  4. 高コストのソート操作があるかどうかを調べます。そのような操作がある場合、「未ソート行または正しくソートされていない行」で推奨される解決策を参照してください。

  5. 高コストの操作が存在する以下のブロードキャスト演算子を探します。

    • DS_BCAST_INNER: テーブルがすべてのコンピューティングノードにブロードキャストされていることを示します。これは、小さなテーブルなら問題ありませんが、大きなテーブルには適しません。

    • DS_DIST_ALL_INNER: すべてのワークロードが 1 つのスライスにあることを示します。

    • DS_DIST_BOTH: 重度の再分散を示します。

    これらの状況に推奨される解決策については、「十分最適でないデータ分散」を参照してください。