今までなんとなくでやっていたので、
自分で理解できるように調べたことの忘備録です。
後からいろいろ補足等できたらなと。
ツッコミや補足等がありましたらコメントしてください。
お願いします。
Nested Loops
駆動表と内部表
駆動表・・・外側のループの対象となる表
内部表・・・内側でループしている表
駆動表(テーブル) x 内部表(テーブル)
内部表(テーブル) x 駆動表(テーブル)
結合コストは変わらないと思うが「駆動表を小さく」
--> 内部表の結合キーにインデックスが存在している場合、内部表のループをスキップできる
INDEX
INDEXを作成すべきかの基準
カーディナリティが高い + 選択率が低い
カーディナリティ
- 値のばらつき具合
- 最も高いのはすべての行において値が異なる(Ex. 一意のキー列)
選択率
- 特定の列の値を選択したに行を母集合からどの程度絞り込めるか
INDEXによる効果が期待できない
- 絞り込み条件がない
- ほとんど絞り込めない
- ユーザーの入力によって選択率が変化
INDEXが利用できない条件
- 中間一致(%~%) 、後方一致(%~)の検索
- 牽引列で演算を行う
- is Nullを利用している
- 牽引列に関数を利用している
- 否定形を使用している