インデックスは、本質的に、整合性制約の効率的な実施、およびクエリとトランザクションの効率的な処理に必要です。 これらはテーブルとビューに作成されます。 たとえば、書籍で使用されているインデックスは、ユーザーが書籍のコンテンツにすばやくアクセスするのを容易にします。同様に、SQLのインデックスもあります。
比較表
比較基準 | クラスタ化インデックス | 非クラスタ化インデックス |
---|---|---|
基本 | テーブル全体の行の格納順序を決定します。 | 別々の物理構造を使用して、テーブル内の行の格納順序を決定します。 |
テーブルごとに許可されているインデックスの数 | クラスタ化インデックスは1つだけ | 複数の非クラスタ化インデックス |
データアクセス | もっと早く | クラスタ化インデックスと比較して遅い |
追加のディスク容量 | 必要ありません | インデックスを別々に保存するために必要 |
クラスタ化インデックスの定義
クラスタ化インデックスは、基本的にテーブル内の行を並べるために使用されます。 テーブル内のローは1つの順序でしかソートできないため、テーブルには1つのクラスタード・インデックスしか持てませんが、 複合クラスタード・インデックスを作成する方法があります 。 列はクラスタ化インデックスに含まれ、キー値の論理的な順序またはインデックス付きの順序は、対応する行の物理的に格納されている順序と同じです。 データのクラスタ化インデックスがない場合は、 ヒープに格納されます 。
ヒープ内でアクセスするレコードは非常に時間がかかり、テーブル内の各エントリがスキャンされて目的のデータにアクセスします。 テーブルスキャンでは、さらに一致するものがあるかどうかを調べる方法はありませんでした。 そのため、この方法は非常に非効率的でした。
クラスタード・インデックスを使用している間は、テーブルがある順序で編成されている場所では、データへのアクセスが高速かつ体系的になります。 これはテーブルの順序フィールドで定義されています。 その検索キーは、ファイルまたはテーブルの順番を指定します。 主キーがテーブルに定義されると、クラスタ化インデックスが自動的に作成されます。
非クラスタ化インデックスの定義
非クラスタ化インデックスは、ある場所にデータを格納し、別の場所にインデックスを格納します。インデックスには、データの格納場所へのポインタがあります。 非クラスタ化インデックス内のインデックスは別の場所に格納されるため、テーブルには複数の非クラスタ化インデックスを含めることができます。 例えば、本は一つ以上の索引を持つことができ、一つは本の単位で賢明な内容を示し、もう一つはアルファベット順に用語の索引を示す。
それはテーブルの非順序フィールドで定義されています。 非クラスタ化インデックスは、主キー以外のキーを使用するクエリのパフォーマンスを向上させる可能性があります。 一意のキーがテーブルに定義されると、非クラスタ化インデックスが自動的に作成されます。
クラスタ化インデックスと非クラスタ化インデックスの主な違い
- テーブルが持つことができるクラスタ化インデックスの数は1つだけです。 テーブルは複数の非クラスタ化インデックスを持つことができますが。
- 非クラスタ化インデックスは基本テーブルを参照しなければならないため、クラスタ化インデックスは非クラスタ化インデックスよりも高速です。 それどころか、これはクラスタ化インデックスの場合は当てはまりません。
- 非クラスタ化インデックスでは、インデックスは別の場所に格納され、追加の記憶領域が必要になります。 対照的に、クラスタ化インデックスはインデックスの論理的な順序と同じ物理的な順序で基本テーブルのデータを格納するので、追加の記憶領域を必要としません。
結論
クラスタ化インデックスは、特定の順序でデータをテーブルの行に格納する方法です。 目的のデータが検索されると、そのデータを含む対応する行だけが影響を受け、出力として表示されます。 一方、非クラスタ化インデックスは、検索時に基本データを参照する物理的に独立した構造にあります。 クラスタ化されていない構造は、異なるソート順を持つことができます。