ネストループ結合

ネストループ結合は、2つのネストされたループを使用して2つのリレーションを結合する単純なアルゴリズムです。[1]結合操作はデータベース管理にとって重要です。

アルゴリズム

2 つの関係およびは次のように結合されます。

アルゴリズムnested_loop_joinは、 R内のタプルrに対してS内のタプルsに対してrs が結合条件を満たす場合タプル < rs >を生成するというものです。       

このアルゴリズムには、n r *b s + brブロック転送と n r +brシークが含まれます。ここで、brb s はそれぞれリレーション R と S のブロック数であり、n rはリレーション R のタプル数です。

アルゴリズムはI/O で実行されます。ここで、 はそれぞれと に含まれる組の数であり、任意の数の関係を結合するように簡単に一般化できます...

ブロックネストループ結合アルゴリズム[2]は、単純なネストループアルゴリズムを一般化したもので、追加のメモリを利用してリレーションのスキャン回数を削減します。このアルゴリズムは、リレーションRの大きなチャンクをメインメモリにロードします。各チャンクについて、Sをスキャンし、現在メモリ上にあるすべてのタプルペアの結合条件を評価します。これにより、Sのスキャン回数はチャンクごとに1回に削減されます。

インデックス結合のバリエーション

内部リレーションに結合で使用される属性のインデックスがある場合は、単純なネスト ループ結合をインデックス結合に置き換えることができます。

アルゴリズムindex_joinは、 R内のタプルrに対してS内のタプルsに対して、インデックス検索でタプル< rs >を生成する。   

このバリエーションの時間計算量は、

参照

参考文献

  1. ^ 「ネストループ結合について理解する」2012年10月4日。
  2. ^ 「クエリ処理の概要」(PDF)。2021年7月30日時点のオリジナル(PDF)からアーカイブ。


Retrieved from "https://en.wikipedia.org/w/index.php?title=Nested_loop_join&oldid=1291060957"