長所
他のインデックス技術と比べて汎用性がある。
均一性、持続性、処理汎用性、非等値性、親ソート性のどれも高い。
均一性
平衡木であるためです。
どのリーフもルートから距離(高さ)が一定の木
のことを指します。
なので
どんなキー値を使っても、常にリーフまでの距離が一定になるため、探索を同じ計算量
で行える。
長く使っているとばらつきが出てくる。
挿入、更新、削除などが繰り返されると、インデックスの構造も崩れていき、非平衡木なっていく。
長くなると、
探索にかかるコストもバラつきが出てくる
ようになります。
持続性
- B-treeの性能劣化は長期的に見ても、
非常に緩やか
- B-treeインデックスの性能は
O(logn)
となります。 - テーブルを
フルスキャンする処理よりもかなり高速
です。 - 背が低い木であることは、
データ量が膨大に増えても変わらない
特性
フルスキャン
テーブルに含まれているレコードを最初から最後まで全て全部読み込む
方法
出典
処理汎用性
-
挿入、更新、削除のコストも、検索と同じくデータ量nに対してO(logn)
です。 データ量が増えても性能劣化の度合いが緩やか
非等値性
等号による検索のみならず、不等号やBETWEENといった範囲検索の条件に対しても、高速化を可能
とします。
否定条件(<>,!=)はB-treeが効果を持たない
。
親ソート性
インデックス構築時にキー値をソートして保持
する。
ソートを暗黙的に使うSQL文
- 集約関数(COUNT, SUM, AVG, MAX, MIN)
- ORDER BY句
- 集合演算(UNION, INTERSECT, EXCEPT)
- OLAP関数(RANK, ROW_NUMBERなど)
ソートはかなりコストの高い演算
です。
DBMS内部で専用のメモリが割り当てられており
、その内部に一時的にデータを保持して実施されます
出典
感想
理解できたことできないことがあった。
知らないことばかりだ。
しかし勉強するとしないとでは違うと思う。
何かの力になったと思う。