web-dev-qa-db-ja.com

リーフページと非リーフページの違いは何ですか?

私はいくつかのインデックス使用状況レポートを実行しており、LeafおよびNon-leafの定義を取得しようとしています。リーフ挿入と非リーフ挿入、更新、削除、ページ結合、ページ割り当ての両方があるようです。それが何を意味するのか、あるいはどちらがより優れているのかは本当にわかりません。

誰かがそれぞれの簡単な定義を与えることができ、葉または非葉が重要である理由を説明できれば、感謝されます!

18
meltdownmonk

次のように考えてください。リーフレベルのページは道路の終わりであり、インデックスのBツリー構造を介してデータを検索します。これらには、インデックス定義で定義されたデータ(またはクラスター化インデックスの場合は、テーブルのすべてのデータ)とデータ行への行ロケーター(非クラスター化インデックスの場合)が含まれています。

非リーフレベルのページリーフレベルのページ/データへの「ロードマップ」を含むキー値と、別の非リーフレベルのページへのポインタ(Bツリーに応じて)を含める中間ページの深さと位置)または結果のリーフレベルページ(非クラスター化インデックスのインデックスページ、およびクラスター化インデックスのデータページ)。

編集:アイデアに写真を加えるのに適した画像を次に示します。

enter image description here

22
Thomas Stringer
  • leaf =すべての行データデータがあるクラスター化インデックス内。非クラスター化インデックスでは、インデックスを構成する列に加えて、含まれている列とクラスター化インデックスキー(テーブルにクラスター化インデックスがある場合)
  • 非リーフ=内部インデックスノード(インデックスの一部である列データのみが含まれます)

すべてのインデックスは、単一のルートノード、場合によっては中間の内部ツリーノードのいくつかの層、およびリーフノードの単一の層で構成されます。

クラスタ化インデックスでは、リーフノードは事実上テーブルです。非クラスター化インデックスでは、リーフノードに列データ、含まれる列、およびクラスター化インデックスキーが含まれます。

SQL Serverインデックスの基本

4
Mitch Wheat