Oracleにおける3つの表接続アルゴリズムのまとめ


1.ネストループ接続(NESTEP LOOP Join)ネスト接続は、処理するデータセットを外部サイクル(駆動データソース)と内部サイクル(駆動データソース)に分け、外部サイクルは一回のみ(先に実行)、内部サイクル実行の回数は外部サイクル実行のデータセットの個数に等しい。
この接続の利点はメモリの使用が非常に少ないことです。駆動データソースが限られ、かつ、駆動テーブルが接続列に対応するインデックスを持っている場合には、このような接続方式が効率的である。このような接続方式はOLT Pシステムでよく見られる。
2.並べ替え合併接続(Sort Merge Join)は名前の通り、並べ替え合併とは、まず接続されたデータセットを別々に並べ替えてから結合し、その実行過程は概ね表Aのデータセットを並べ替え、並べ替え結果が保存されているワークエリアAにある。テーブルBのデータセットを並べ替えて、並べ替え結果をワークエリアBに保存します。最後にワークエリアAとBのデータをマージします。
このような接続方法に対しては、並べ替えのオーバーヘッドが非常に大きく、並べ替え作業エリアに関するメモリパラメータがあります。アーアアウsizeとsort_アーアアウretained_sizeは全部PGAにあります。
3.ハッシュ接続(Hash Join)ハッシュ接続処理の2つのデータセットは、それぞれ、構造入力(build input)とプローブ入力(probe input)と呼ばれ、入力された各行のレコードを構成して、ハッシュテーブルを構成し、入力の各行のレコードを検出して、接続条件に合致するレコードを見つける。より小さなテーブルを構成入力として、より大きなテーブルをプローブ入力として使用すると、ハッシュ接続の効率が高くなり、実行計画では、より小さな入力テーブルが前面にあり、より大きなプローブテーブルが後ろにある。ハッシュ接続は、等しい接続の条件下でのみ行われる。ハッシュ表ワークエリアに関連するメモリパラメータはあります。アーアアウsizeは、PGAにもあります。