翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Redshift クエリプランの EXPLAIN 演算子
このセクションでは、EXPLAIN
出力で最も頻繁に表示される演算子を簡単に説明します。
シーケンシャルスキャン
Sequential Scan 演算子 (Seq Scan) は、テーブルスキャンを示します。Seq Scan は、テーブル内の各列を最初から最後まで順番にスキャンし、各行のクエリ制約を ( WHERE
句で) 評価します。
Join 演算子
Amazon Redshift は、結合されるテーブルの物理的な設計、結合に必要なデータの場所、クエリ固有の要件に基づいて、結合演算子を選択します。
Nested Loop
ネストされたループは主にクロス結合に使用されます。クロス結合は、2 つのテーブルのデカルト積を算出する結合条件のない結合です。ネストされたループは通常、ネストされたループ結合として実行されます。これは、可能な結合タイプの中で最も遅いものです。ネストされたループが存在する場合、STL_ALERT_EVENT_LOG ビューにネストされたループアラートイベントが表示されます。次のクエリを実行して、ネストされたループを持つクエリを特定できます。
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;
ハッシュ結合とハッシュ
ハッシュ結合とハッシュ演算子は通常、ネストされたループ結合よりも高速です。これらの演算子は、内部結合と左右の外部結合に使用されます。結合列が分散キーとソートキーの両方ではないテーブルを結合するときに、ハッシュ結合演算子とハッシュ演算子を使用できます。ハッシュ演算子は、結合内の内部テーブルのハッシュテーブルを作成します。ハッシュ結合演算子は、外部テーブルを読み取り、結合列をハッシュし、内部ハッシュテーブルで一致を検索します。
マージ結合
マージ結合演算子は通常、最速の結合であり、内部結合と外部結合に使用されます。マージ結合はフル結合には使用されません。結合列がディストリビューションキーとソートキーの両方であるテーブルを結合する場合、および結合テーブルの 20% 未満がソートされていない場合、マージ結合を使用できます。マージ結合演算子は、ソートされた 2 つのテーブルを順番に読み取り、一致する行を見つけます。未ソート行の割合を表示するには、SVV_TABLE_INFO システムテーブルをクエリします。
Aggregate 演算子
クエリプランは、集計関数とGROUP BY
オペレーションを含むクエリで次の演算子を使用します。
-
Aggregate –
AVG
や などのスカラー集計関数の演算子SUM
-
HashAggregate – 未ソートのグループ化された集計関数の演算子
-
GroupAggregate – ソートされたグループ化された集計関数の演算子
ソート演算子
クエリが結果セットをソートまたはマージする必要がある場合、クエリプランは次の演算子を使用します。
-
ソート —
ORDER BY
句と、UNION
クエリ、結合、SELECT DISTINCT
クエリ、ウィンドウ関数に必要なソートなどの他のソートオペレーションを評価します。 -
マージ — 並列オペレーションから派生した中間ソート結果に従って、最終的なソート結果を生成します。
UNION、INTERSECT、および EXCEPT 演算子
クエリプランは、、UNION
、INTERSECT
および での設定オペレーションを含むクエリに次の演算子を使用しますEXCEPT
。
-
サブクエリ —
UNION
クエリの実行に使用されます -
Hash Intersect Distinct –
INTERSECT
クエリの実行に使用されます。 -
SetOp 例外 —
EXCEPT
(またはMINUS
) クエリの実行に使用されます
その他の演算子
次の演算子は、ルーチンクエリのEXPLAIN
出力にも頻繁に表示されます。
-
一意 –
SELECT DISTINCT
クエリとUNION
クエリの重複を削除します -
制限 —
LIMIT
句を処理します。 -
Window – ウィンドウ関数を実行します。
-
結果 — テーブルアクセスを含まないスカラー関数を実行します。
-
サブプラン — 特定のサブクエリに使用されます
-
ネットワーク — 中間結果をリーダーノードに送信してさらに処理します
-
マテリアライズ – ネストされたループ結合と一部のマージ結合への入力行を保存します