インデックスの下部で使用されるデータ構造と、他のデータ構造の代わりに B+ ツリーが使用される理由:
(1) 二分木を使用する場合 インクリメンタルフィールドをインデックスとして使用すると、二分木がリンクリストに縮退してしまい、検索効率が非常に低くなります。
(2) 赤黒ツリーを使用する場合、新しい要素の挿入中に自己バランスを取り、位置を調整しますが、結局のところ、赤フォーク ツリーは依然として 2 分ツリーです。ツリーの高さは依然として高すぎます。高い場合、I/O 操作が多すぎるため、マルチパス ツリー B ツリーおよび B+ ツリーの層の高さが低くなります。
(3) ハッシュ テーブルを使用する場合: ハッシュ テーブルは単一のクエリでは確かに高速ですが、次のような範囲クエリは次のとおりです。
(4)
1. B ツリーの非リーフ ノードとリーフ ノードの間に重複はなく、B+ ツリーの非リーフ ノードとリーフ ノードの間に重複があります。つまり、B+ ツリーには冗長ノードがあります。
2. B ツリーの非リーフ ノードとリーフ ノードはどちらもインデックス キーとデータの両方を格納します。B+ ツリーの非リーフ ノードはインデックスのみを格納し、データは格納しません。リーフ ノードはインデックスとデータの両方を格納します。データ。
3. B ツリーのリーフ ノードはディスク上の隣接ノードの位置を保存しませんが、B+ ツリーのリーフ ノードはディスク上の隣接ノードの位置を保存するため、B+ ツリーは範囲クエリをサポートします。
4. B-tree では葉ノードを調べなくてもデータを見つけることができますが、B+ ツリーでは葉ノードまでデータを見つける必要があります。