

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# クエリプランの分析
<a name="c-analyzing-the-query-plan"></a>

[EXPLAIN](r_EXPLAIN.md) コマンドを実行して、クエリプランを取得します。

クエリプランを分析する前に、クエリプランを読む方法の知識が必要です。クエリプランを読む方法がわからない場合、次に進む前に「[クエリプランの作成と解釈](c-the-query-plan.md)」を参照することをお勧めします。

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

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

1. 結合の種類を参照します。
   + **ネステッドループ**: この結合は通常、結合条件が省略されたために発生します。推奨される解決策については、「[Nested Loop](query-performance-improvement-opportunities.md#nested-loop)」を参照してください。
   + **ハッシュおよびハッシュ結合**: ハッシュ結合は、結合列が分散キーでもソートキーでもないテーブルを結合するときに使用されます。推奨される解決策については、「[ハッシュ結合](query-performance-improvement-opportunities.md#hash-join)」を参照してください。
   + **マージ結合**: 変更は必要ありません。

1. どのテーブルが内部結合に使用され、どのテーブルが外部結合に使用されるのかに注目してください。クエリエンジンは通常、内部結合に小さいテーブルを選択し、外部結合に大きいテーブルを選択します。統計が古いと思われる場合、このような選択は行われません。推奨される解決策については、「[テーブル統計がないか古い](query-performance-improvement-opportunities.md#table-statistics-missing-or-out-of-date)」を参照してください。

1. 高コストのソート操作があるかどうかを調べます。そのような操作がある場合、「[未ソート行または正しくソートされていない行](query-performance-improvement-opportunities.md#unsorted-or-mis-sorted-rows)」で推奨される解決策を参照してください。

1. 高コストの操作が存在する以下のブロードキャスト演算子を探します。
   + **DS\_BCAST\_INNER**: テーブルがすべてのコンピューティングノードにブロードキャストされていることを示します。これは、小さなテーブルなら問題ありませんが、大きなテーブルには適しません。
   + **DS\_DIST\_ALL\_INNER**: すべてのワークロードが 1 つのスライスにあることを示します。
   + **DS\_DIST\_BOTH**: 重度の再分散を示します。

   これらの状況に推奨される解決策については、「[十分最適でないデータ分散](query-performance-improvement-opportunities.md#suboptimal-data-distribution)」を参照してください。