b-tree と b+-tree の違いは何ですか?

B+ ツリーは B ツリーを改良したもので、内部ノードはインデックスとしてのみ使用され、データ レコードへのポインターは削除されます。

1. B+ ツリーでは、リーフ ノードのみがレコードへのポインター (ROWID) を持ちますが、B ツリーでは、すべてのノードがそれを持ち、内部ノードに表示されるインデックス アイテムはレコードに表示されなくなります。葉ノード。B+ ツリーのすべてのリーフ ノードはポインターによってリンクされていますが、B ツリーはリンクされていません。
ここに画像の説明を挿入

2. B ツリーの利点: 内部ノードのデータは直接取得でき、リーフ ノードごとに配置する必要はありません。B+ ツリーの利点: 非リーフ ノードは ROWID を持たないため、1 つのブロックにより多くのインデックス アイテムを格納できます。まず、ツリーの高さを減らすことができます。
ここに画像の説明を挿入

次に、内部ノードはより多くのリーフ ノードを見つけることができます。リーフ ノードはポインタで接続されており、範囲スキャンは非常に単純ですが、B ツリーの場合、リーフ ノードと内部ノードの間を行き来する必要があります。

B+ ツリーの内部ノードには、インデックス列のデータと次の層ノードのアドレスが格納され、リーフ ノードには、インデックス列のデータと列データに対応する rowId が格納されます。

B ツリーのすべてのノードは、インデックス列のデータと、列データに対応する rowId を格納します。

おすすめ

転載: blog.csdn.net/GBS20200720/article/details/127765956