1

インデックス付きネストループ結合:

外部リレーション R の各タプル tr に対して、インデックスを使用して、タプル tr との結合条件を満たす S 内のタプルを検索します

一部の資料では、「Indexed Nested-Loop Join」は等結合または自然結合にのみ適用され、インデックスは内部関係の結合属性で使用できると述べられています

SELECT *
FROM tableA as a
JOIN tableB as b
ON a.col1 > b.col1;

b.col1 にインデックスがあるとします。

この場合、インデックス付きネストループ結合が適用されないのはなぜですか?

4

2 に答える 2

3

Database Systems Concepts (c) Silberschatz、Korth、および Sudarshan のスライドを引用しています。

DBMS で結合を計算する必要があります。さまざまな方法で実行できる特殊なケースがたくさんあります。これらには、インデックス、選択条件などがあるかどうかが含まれる場合があります。

その本がその名前で呼んでいる特定のテクニックは、特定の場合に機能します。

インデックス付きネストループ結合

内側のループの結合属性でインデックスが使用可能であり、結合が等結合または自然結合である場合

答えは、クエリが条件を満たしていないためです。等結合 (つまり、ON または WHERE a.col1 = b.col1) または自然結合 (USING (col1) または NATURAL JOIN) ではありません。

これらの条件を満たさないということは、その手法を使用しないことを意味する理由については、それが機能しないか、他の手法が優れているためです。あなたはテクニックを与えました:

外部リレーション r の各タプル tr について、インデックスを使用して、タプル tr との結合条件を満たす s 内のタプルを検索します

不等式の場合、インデックスを「参照」することはできません。インデックスを検索しています。この方法ではありません。

于 2014-06-18T03:25:05.243 に答える
0

2 番目の回答を読んだので、Silberschatz、Korth、および Sudarshan による Database System Concepts 7th Editionという本を調べました。

まず、ご覧のとおり、インデックス付きのネストされたループ結合は、内側のループでインデックスが使用可能な場合に使用でき、等値結合に関連するその他の制限はありません。

ここに画像の説明を入力

混乱はMerge Joinにあると思います。708 ページの第 15 章クエリ処理の主題で、このアルゴリズムは自然結合と等結合を計算するためだけに使用できることがわかります。

ここに画像の説明を入力

トピックの利益を得るために、Hash Join について言及するだけです。この場合、Merge Join と同じように、自然結合と等結合を計算するためだけに使用できます。

ここに画像の説明を入力

于 2020-09-17T15:36:50.433 に答える