翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon Redshift クエリプランの EXPLAIN 結合
Amazon Redshift は、以下に基づいてさまざまな結合演算子を使用し、データを取得します。
-
結合されているテーブルの物理的な設計
-
クエリの構造
-
結合に必要なデータの場所
-
クエリ自体の特定の要件
Amazon Redshift では、一般的に次の結合タイプが使用されます。
-
ネストしたループ – ネストしたループは、2 つのテーブル間にハッシュテーブルを作成できない場合に発生します。ネストしたループは、主にクロス結合 (直積集合) および一部の不等結合に使用されます。ここでは、データベースで左側のテーブルのすべての値と右側のテーブルのすべての値を比較して確認する必要があります。ネストしたループ結合の複雑な点は、結合を処理するために約 N*N (または N²) 個の異なるオペレーションを実行する必要があるという点で「二次的」であることです。ネストしたループは、最も最適性の低い結合タイプです。
-
ハッシュ結合 – ハッシュ結合の結合条件は相互に最適ではありませんが、Amazon Redshift ではハッシュ結合を使用すると少しの作業で管理できます。ハッシュ結合は通常、ネストしたループ結合よりも高速です。Amazon Redshift は両方のテーブルを調べ、その間にハッシュテーブルを作成します。これは、テーブルの中央に配置されたルックアップテーブルのようなものです。例えば、結合列が分散キーでもソートキーでもないテーブルを結合するときに、ハッシュ結合とハッシュ演算子が使用されます。
-
マージ結合 – 通常、マージ結合は最も高速な結合であり、内部結合と外部結合に使用されます。マージ結合では、両方のテーブルが相互に最適です。つまり、両側の結合条件は分散キーとソートキーです。どちらのテーブルも調整の必要なく最適な状態で整列されます。テーブル内のソートされていない行は、結合テーブルの 20% 未満に抑える必要があります。ソートされていない行の割合を表示するには、SVV_TABLE_INFO システムテーブルをクエリします。マージ結合は完全結合には使用されません。