ヒープはインデックス構造と見なされますか、それとも厳密にインデックスのないテーブル構造ですか?


回答:


9

MSDNから- テーブルとインデックスの構成

「SQL Serverテーブルは、2つの方法のいずれかを使用して、パーティション内のデータページを整理します。

  • クラスター化テーブルは、クラスター化インデックスを持つテーブルです。

データ行は、クラスター化インデックスキーに基づいた順序で格納されます。クラスター化インデックスは、クラスター化インデックスキー値に基づいて行の高速検索をサポートするBツリーインデックス構造として実装されます。リーフレベルのデータページを含む、インデックスの各レベルのページは、二重リンクリストにリンクされています。ただし、あるレベルから別のレベルへのナビゲーションは、キー値を使用して実行されます。

  • ヒープは、クラスター化インデックスを持たないテーブルです。

データ行は特定の順序で格納されることはなく、データページのシーケンスに特定の順序はありません。データページはリンクリストにリンクされていません。」

ヒープ-SQL Serverの最適化

「定義上、ヒープテーブルはクラスター化インデックスを持たないテーブルです。ヒープベースのテーブルの異なるページはディスク上の異なる非連続領域を占有し、どのようにもリンクされません。」

クラスター化インデックス構造とは対照的に、「SQL Serverでは、インデックスはBツリーとして編成されます。インデックスBツリーの各ページはインデックスノードと呼ばれます。Bツリーの最上位ノードはルートノードと呼ばれます。インデックス内のノードの最下位レベルはリーフノードと呼ばれ、ルートとリーフノード間のインデックスレベルは集合的に中間レベルと呼ばれます。クラスター化インデックスでは、リーフノードには基になるテーブルのデータページが含まれます。中間レベルノードには、インデックス行を保持するインデックスページが含まれ、各インデックス行には、キー値と、Bツリーの中間レベルページまたはインデックスのリーフレベルのデータ行へのポインタが含まれます。インデックスは二重リンクリストにリンクされています。」

その他の参照:


10

インデックスは、行にデータの順序があることを意味します。ヒープはそのような順序では作成されず、順序も維持されないため、テーブルデータを格納する方法にすぎません。

ヒープを指定するには、いくつかの例(dm_db_index_physical_statsなど)があります。0のインデックスIDを入力する必要があります。これは先ほど述べたことと矛盾しているように見えますが、使用法; これ以上何もない。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.