クラスタ化インデックス
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/12 07:37 UTC 版)
「索引 (データベース)」の記事における「クラスタ化インデックス」の解説
多くのインデックスは、書籍の索引と同様、実際のデータレコードの並び順とは無関係に構築される。そのため、範囲検索を行う場合、その対象のレコードは表内の複数個所に分散している可能性がある。分散したレコードにアクセスが必要なため、複数回のランダム I/O が発生してしまう。 一方、クラスタ化インデックス (英: clustered index) では、データブロックをインデックスの順序で並べ替えて保持し、行データが順番に格納される。これは、頭文字で項目をソートしてあるアドレス帳に似ている。クラスタ化インデックスのキーで範囲検索を行う場合、条件に適合する行が連続して配置されるため全体的な取得速度を大幅に向上させることができる。ただし速度が向上するのは、クラスタ化インデックスと同じまたは逆の順序でデータに順次アクセスする場合、またはアイテムの範囲が選択されている場合に限る。 テーブルがクラスタキー以外の属性を持っていても、クラスタキーでソートする必要があるため、一般的にはデータベーステーブルには 1個のクラスタ化インデックスのみを設定できる。ただし、データベース製品によっては複数のクラスタ化インデックスを設定でき、多次元クラスタを提供するものもある。 物理レコードはディスク上でこのソート順であるため、シーケンスの次の行項目は最後の行項目の直前または直後にあり、必要なデータブロックの読み取りは少なくなる。したがって、クラスタ化インデックスの主な機能は、物理データ行を指すインデックスブロックに従い物理データ行の順序を並び替えることである。データベースによっては、データブロックとインデックスブロックを別々のファイルに分割する場合もあれば、2つの完全に異なるデータブロックを同じ物理ファイル内に配置する場合もある。 以下に、クラスタ化インデックスを提供するデータベース製品の例を挙げる: Oracle Database のインデックス構成表。 Microsoft SQL Server のクラスタ化インデックス。 MySQL InnoDB では強制的に主キーがクラスタ化インデックスになる。 PostgreSQL では CLUSTER コマンドにより類似の効果を得られる。 Microsoft SQL Serverでは、クラスタ化インデックスの木構造は実際のデータに対応し、非クラスタ化インデックスの場合のように他の場所にあるデータへのポインターではない。 各リレーションは、クラスタ化インデックスを1つと非クラスタ化インデックスを複数持つことができる。
※この「クラスタ化インデックス」の解説は、「索引 (データベース)」の解説の一部です。
「クラスタ化インデックス」を含む「索引 (データベース)」の記事については、「索引 (データベース)」の概要を参照ください。
- クラスタ化インデックスのページへのリンク