0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

B-treeインデックス

Posted at

長所

他のインデックス技術と比べて汎用性がある。
均一性、持続性、処理汎用性、非等値性、親ソート性のどれも高い。

均一性

平衡木であるためです。
どのリーフもルートから距離(高さ)が一定の木のことを指します。
なので
どんなキー値を使っても、常にリーフまでの距離が一定になるため、探索を同じ計算量で行える。

長く使っているとばらつきが出てくる。

挿入、更新、削除などが繰り返されると、インデックスの構造も崩れていき、非平衡木なっていく。
長くなると、
探索にかかるコストもバラつきが出てくるようになります。

持続性

  • 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内部で専用のメモリが割り当てられており、その内部に一時的にデータを保持して実施されます

出典

感想

理解できたことできないことがあった。
知らないことばかりだ。
しかし勉強するとしないとでは違うと思う。
何かの力になったと思う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?