クラスタ化インデックスとは何ですか?


15

クラスタ化インデックスの簡単な説明が必要です。

  • クラスタ化インデックスとは何ですか?
  • クラスタ化インデックスを使用するためのベストプラクティスは何ですか?

新しいデータは常にテーブルの末尾に追加されるため、クラスター化インデックスで日付を使用することをお勧めします。
ラルフ冬

1
可能ですが、常にではありません。
-mrdenny

@mrdenny-これがそうでない場合について詳しく説明してもらえますか?
ラルフ冬

1
行が順不同で入力されている場合。より一般的には、テーブルが主キーによってクエリされる場合。主キーがINT(またはより小さい)で、テーブルに非クラスター化インデックスが多数ある場合、日時のクラスター化キーは大きくなり、効率が低下します。日付列でテーブルがクエリされない場合は、非クラスタ化インデックスのみが使用されるため、クラスタリングキーは価値がないため、使用するよりも日付列でクエリされません。
mrdenny

@mrdenny:テーブルには、日付カラム(あなたの最後の1のサブセットの場合:)がない場合にも
ypercubeᵀᴹ

回答:


15

簡単な言葉で...

電話帳:データはインデックス/インデックスはデータです。あなたを調べるために、私はレザエイ、例えばアミールから始めます。外部ルックアップは必要ありません。

データベース用語で:

テーブルデータとクラスター化インデックスは同じです(SQL Serverでは、InnoDB、Oracle IOTも)

ベストプラクティスは、狭い数値、厳密に増やすことです(IDENTITYまたはAutonumber列を考えてください)。GUIDなどのデータ型はお勧めできません

読むためのリンク(この回答を肥大化させないため)

編集して、私のベストプラクティスの提案を完全に説明するには、エリックハンフリーのコメントのリンクをたどってください:インデックス作成の女王:キンバリートリップ


3
Kimberly Trippのブログも必要になります:sqlskills.com/BLOGS/KIMBERLY/category/Clustered-Index.aspx
Eric Humphrey-lotsahelp

1
そしてそこには、コンテキストなしで「ベストプラクティス」を適用することに関する問題があります。たとえば、頻繁に検索される大きなテーブルのプライマリ検索条件が日付範囲である場合、クラスター化インデックスの最適な場所は、プライマリキーではなく検索される日付です。テーブルとクラスター化インデックスが1つであり、同じものであるということは、少し単純化しすぎています。実際には、データはクラスター化インデックスで指定された順序で格納されます。特に、これはクラスター化インデックスが完全なデータセットを返す範囲検索に特に役立つことを意味します。
ラッセルスティーン

2
@Russell Steen:1.リンクを含めました。2。OPに質問しなければなりませんでした。3でこの答えをどのレベルにしたかを考えてください。EricHumphreyがリンクを作成しました。私たちは経験豊富な人が知っていることや理解していることをケースバイケースで経験することができますが、教育や圧倒を支援するためにここにいますか?
gbn

あなたが言っていることを聞きます。問題はあなた自身の答えにあるのではなく、自分よりも経験の少ない人が引用や適用を駆け回っているという事実は、ベストプラクティスが書かれた使用法や文脈を理解せずに「ベストプラクティス」だからです-私ははい、私たちは教育するためにここにいると主張し、ポストでより多くのコンテキストを直接提供せずにベストプラクティスを引用することは、その仕事としてはうまくいきません。
ラッセルスティーン

2
ああ、SQL-Serverタグに気付いただけで、無視してください。
ypercubeᵀᴹ

3

クラスター化インデックスが設定されているフィールドでレコードが物理的に並べ替えられるように、データ自体のインデックス。これが、テーブルごとにクラスター化インデックスを1つだけ持つことができる理由です。

非クラスター化インデックスはルックアップに対してそれほど高速ではありませんが、これらのタイプのインデックスの多くをテーブルに含めることができます。


3
非クラスタ化インデックスが問題のルックアップをカバーしている場合、非クラスタ化インデックスはルックアップに対しても同様に効率的です。
ラッセルスティーン

@Russellインデックスによってデータの実際のソート順が強制されるため、高速化する方法はありません。SQLやRDBMSが必要な情報を見つけるための、より簡単で速い方法はありません。
kacalapy

4
速くは言わなかった。カバリングインデックスには、インデックスの選択で要求されたすべてのデータがあります-IN ORDER、ディスク上の別の場所。したがって、一致するカバリングインデックスに対する選択がテーブルにヒットすることはありません。
ラッセルスティーン

2
カバーするNCIはおそらく小さくなり、読み取りページが少なくなり、高速になります。
マーティンスミス

テーブルにクラスター化インデックスを1つだけ持つ理由は物理的な並べ替えではなく、インデックスページは常に論理的に並べ替えられ、ページの連続した割り当ては保証されません。クラスター化インデックスはテーブル自体であり、非クラスター化インデックスは必要な列を持つテーブルのコピーであるため、テーブルごとにクラスター化インデックスを1つだけ持つことができます。
マノジパンディ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.