web-dev-qa-db-ja.com

マルチカラムクラスタリングインデックスを使用する利点と欠点

複数の列の組み合わせである主キーを使用する利点と欠点は何ですか?

GUIDのように一意の非クラスター化インデックスを持つテーブルを見つけましたが、クラスター化インデックスは9列の組み合わせに適用されています。テーブルには合計29列あります。

そのようなクラスタリングキーを持つことの利点が何であるかを理解するのを手伝ってくれる人はいますか? Kimberly Tripp による|| Kimberly Trippによるインデックスの議論 クラスタリングインデックスは狭く、一意で静的である必要がありますが、このケースはKimberlyが述べるものとはまったく逆です:

  1. 主キーは変更の影響を受けやすいため、静的ではありません
  2. 複数の列にまたがっており、他の非クラスタリングインデックスがマッピングのためにそれを参照するため、これは明らかに狭くはありません。そのため、IAM/PFSのコストは確実に高くなります。
3
mayur rathi

狭い静的な一意のクラスタリングキーは、次のような状況に適しています。

  • テーブルが別のテーブルによって参照されている(参照テーブルには通常、クラスタリングキーと同じ主キーを含める必要があるため)
  • テーブルに多くの非クラスター化インデックスがあります(非クラスター化インデックスにクラスター化キーが含まれているため)
  • 他のフィールドまたはフィールドの組み合わせが一意であることが保証されていない
  • 通常、テーブルに対するクエリは1行を取得し、代理キーを使用してそれを行います(たとえば、クエリは、自然キーで検索しているユーザーではなく、代理キーを学習したアプリケーションからのものであるため)。

複数列のクラスタリングキーは、次のような場合に適しています。

  • 他のテーブルがこのテーブルを参照していない(例:データウェアハウスのファクトテーブル)
  • このテーブルに対するクエリは通常、代理キーではなく自然キーまたはその一部を参照します(たとえば、日付範囲をスキャンするクエリ)
  • このテーブルにゼロまたは少数の非クラスター化インデックスがあります(これらのインデックスに幅広いクラスター化キーを含めると、非常に大きくなります)
  • ユニークで自然な鍵が存在する

https://www.toadworld.com/platforms/sql-server/w/wiki/9547.data-warehousing-indexing-considerations

2
mendosi