SQL Server中的复合聚簇索引

Gib*_*boK 10 sql-server database-design composite-index

我有一个表IDENTITY列作为主键(经典ID列).

SQL Server自动为该主键创建聚簇索引.

我的问题是:

  • 我可以只有一个具有更多列的CLUSTERED INDEX复合材料吗?

如果是,我如何删除默认聚簇索引并重新创建具有此属性的新索引.

感谢您的支持

mar*_*c_s 19

是的,每个表只能有一个聚簇索引 - 数据是由该索引物理排列的,因此您不能有多个索引.

但是,我不建议使用复合聚簇索引.为什么?因为聚集索引应始终为:

  • 尽可能小--4字节的INT是完美的
  • 稳定 - 永远不会改变,所以你没有通过所有索引进行波纹更新
  • 唯一的 - 否则,SQL Server必须使用人工的4字节值"统一"您的条目
  • 最佳的将是:不断增加

INT IDENTITY作为聚簇索引是完美的 - 我建议你保持这种方式.

聚集索引列(或列集)也会添加到同一个表中每个非聚簇索引的每个条目中 - 因此,如果使聚簇索引大,20,50个字节或更多,则会开始浪费大量空间 - 在磁盘上和服务器的内存中,这通常会降低系统性能.

阅读有关聚集索引的所有内容以及它们应该是什么样的好聚簇索引: