Amazon Redshift クエリプランの EXPLAIN 演算子 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Redshift クエリプランの EXPLAIN 演算子

このセクションでは、EXPLAIN 出力で最もよく使用される演算子を簡単に示します。

Sequential Scan

Sequential Scan 演算子 (Seq Scan) は、テーブルスキャンを示します。Seq Scan によってテーブル内の各列を最初から最後まで連続的にスキャンし、各行のクエリ制約を (WHERE 句で) 評価します。

Join 演算子

Amazon Redshift は、結合されるテーブルの物理的な設計、結合に必要なデータの場所、クエリ固有の要件に基づいて、結合演算子を選択します。

Nested Loop

Nested Loop は、主にクロス結合に使用されます。クロス結合は、2 つのテーブルのデカルト積を算出する結合条件のない結合です。Nested Loop は通常、使用可能な結合タイプの中で最も遅いネストしたループ結合として実行されます。Nested Loop がある場合、STL_ALERT_EVENT_LOG ビューにネストしたループのアラートイベントが表示されることがあります。次のクエリを実行して、Nested Loop が含まれるクエリを特定できます。

select q.query, trim(q.querytxt) as sql_query, q.starttime from stl_query q join stl_alert_event_log l on l.query = q.query and l.event like 'Nested Loop Join in the query plan%' order by q.starttime desc;

Hash Join および Hash

Hash Join 演算子と Hash 演算子は通常、ネストしたループ結合よりも高速です。これらの演算子は、内部結合と左右の外部結合に使用されます。Hash join と Hash 演算子は、結合列が分散キーでもソートキーでもないテーブルを結合するときに使用されます。Hash 演算子で、結合の内部テーブルのハッシュテーブルが作成されます。Hash Join 演算子では、外部テーブルを読み取り、結合する列をハッシュ処理し、内部ハッシュテーブルで一致を検索します。

マージ結合

Merge Join 演算子は通常、最も高速な結合であり、内部結合と外部結合に使用されます。Merge Join は、完全結合には使用されません。この演算子は、結合列が分散キーとソートキーの両方である結合テーブルで、未ソートの結合テーブルが 20 % 未満の場合に使用できます。また、ソートされた 2 つのテーブルを順に読み取り、一致する行を検索します。ソートされていない行の割合を表示するには、SVV_TABLE_INFO システムテーブルをクエリします。

Aggregate 演算子

クエリプランは、集計関数および GROUP BY 操作を含むクエリで次の演算子を使用します。

  • AggregateAVGSUM といったスカラー集計関数の演算子

  • HashAggregate – 未ソートのグループ化された集計関数の演算子

  • GroupAggregate – ソート済みのグループ化された集計関数の演算子

ソート演算子

クエリプランは、クエリで結果セットをソートまたはマージする必要があるときに次の演算子を使用します。

  • SortORDER BY 句およびその他のソート操作 (UNION クエリや結合、SELECT DISTINCT クエリ、ウィンドウ関数で必要となるソートなど) を評価します。

  • Merge – 並列操作から導出される、ソートされた中間結果に従って最終的なソート結果を作成します。

UNION、INTERSECT、および EXCEPT 演算子

クエリプランは、UNIONINTERSECT、および EXCEPT を使用したセット操作を含むクエリに次の演算子を使用します。

  • SubqueryUNION クエリの実行に使用されます

  • Hash Intersect DistinctINTERSECT クエリの実行に使用されます

  • SetOp ExceptEXCEPT (または MINUS) クエリの実行に使用されます

その他の演算子

次の演算子は、ルーチンクエリの EXPLAIN 出力にも頻繁に出現します。

  • UniqueSELECT DISTINCT クエリと UNION クエリの重複を排除します

  • LimitLIMIT 句を処理します

  • Window – ウィンドウ関数を実行します

  • Result – テーブルへのアクセスを伴わないスカラー関数を実行します

  • Subplan – 特定のサブクエリに使用されます

  • Network – 詳細な処理を行うために中間結果をリーダーノードに送ります

  • Materialize – ネストしたループ結合と一部のマージ結合への入力用に、行を保存します