クラスタ化インデックスと非クラスタ化インデックスの主な違いは、非クラスタ化インデックスがテーブルごとに複数存在するのに対し、クラスタ化インデックスはテーブルごとに1つしか存在しないことである。
まず、インデックスとは、データベースファイルからレコードを簡単かつ効率的に検索するための技術です。
データベースを利用するクライアント・アプリケーションのクエリ性能を高速化する。
さらに、インデックスにはクラスタ化インデックスと非クラスタ化インデックスの2種類があります。
クラスタ化インデックスは、データがディスクに格納される順序を変更する。
しかし、非クラスタ化インデックスでは、インデックスの論理的な順序は、ディスクに格納されているデータの物理的な順序と一致しない。
インデックスとは
顧客の詳細を保存するテーブルがあるとする。
テーブルには、姓、名、連絡先の3つのカラムがあります。
もし、テーブルにインデックスがなければ、データはストレージの空きスペースに順不同に挿入される。
特定の顧客の電話番号を取得する必要がある場合、最初からデータを検索する必要がある。
データを取得しても、最後に一致するデータがある可能性があるので、最後まで続ける必要がある。
このような場面でインデックスが役に立つ。
クラスタ化インデックスとは
クラスタ化されたインデックスは、データが物理的に格納される順序を変更する。
テーブルのデータが物理的な順序になった後、DBMS はインデックスページを作成する。
これは、必要なデータに簡単にアクセスできるようにするためのものです。
基本テーブルデータを含む全体の構造は、クラスタ化インデックスとして知られています。
クエリがクラスタ化インデックスツリーを通って基本テーブルデータへ移動するプロセスをクラスタ化インデックスシークと呼びます。
クラスタ化インデックスは1つのテーブルにつき1つです。
なぜなら、別々の構造を使用しなければ、データを2つの異なる方法で物理的に配置することは不可能だからです。
ノンクラスターインデックスとは
非クラスタ化インデックスは、テーブルの物理データをソートしない。
インデックスとテーブルは別の場所に格納されます。
さらに、テーブルのデータへのポインタや参照も存在する。
データの順番はテーブルのデータとは無関係なので、どのような順番でも格納することができます。
したがって、1つのテーブルに複数の非クラスタ化インデックスが存在することができる。
ベース・テーブルのデータはヒープにあり、参照は行の識別子です。
ある列に対するクエリを実行する場合、データベースはまずインデックスにアクセスし、テーブル内の対応する行のアドレスを探します。
次に、その行のアドレスに移動し、他の列の値を取得します。
したがって、非クラスタ化インデックスはクラスタ化インデックスより遅いです。
テーブルにユニークキーが定義されている場合、非クラスタ化インデックスが自動的に作成されます。
クラスタ化インデックスと非クラスタ化インデックスの違い
定義
クラスタ化されたインデックスは、テーブルのレコードがインデックスと一致するように物理的に並べ替えられるインデックスの一種です。
一方、非クラスタ化インデックスとは、インデックスの論理的な順序が、ディスク上の行の物理的な格納順序と一致しない特殊なタイプのインデックスです。
これらの定義は、クラスタ化インデックスと非クラスタ化インデックスの違いを説明しています。
インデックス数
クラスタ化インデックスと非クラスタ化インデックスの大きな違いは、テーブルごとのインデックスの数です。
1つのテーブルに1つのクラスタ化されたインデックスを持つことができますが、複数の非クラスタ化されたインデックスを持つことができます。
機能性
クラスタ化されたインデックスは、実際のデータへのポインタを保存しない。
しかし、非クラスタ化インデックスは、値と、データを保持する実際の行へのポインタの両方を格納します。
したがって、この点もクラスタ化インデックスと非クラスタ化インデックスの違いと言える。
データの格納順
また、クラスタ・インデックスはディスク上のデータの格納順序を決定するが、非クラスタ・インデックスはディスク上のデータの格納順序に影響を与えない。
必要なメモリ容量
さらに、非クラスタ化インデックスは、クラスタ化インデックスよりも多くのメモリ領域を必要とします。
速度
クラスタ化インデックスと非クラスタ化インデックスのもう一つの違いは、速度です。
クラスタ化されていないインデックスは、クラスタ化されたインデックスよりも遅い。
結論
インデックスには、クラスタ化インデックスと非クラスタ化インデックスの2種類があります。
クラスタ化インデックスと非クラスタ化インデックスの違いは、クラスタ化インデックスは1つのテーブルに1つしかないのに対し、非クラスタ化インデックスはテーブルごとに複数存在することである。
非クラスター化インデックスはクラスタードインデックスより遅く、より多くのスペースを必要とする。