2010-07-08 89 views
8

我有一个IDENTITY列作为主键(经典ID列)的表。SQL Server中的复合聚集索引

SQL Server自动为该主键创建一个群集索引。

我的问题是:

  • 我可以有更多的列的唯一一个聚集索引复合?

如果是的话,我该如何删除默认的聚集索引并重新创建一个新的属性。

感谢您的支持

回答

14

是的,你只能有每个表一个聚集索引 - 数据在物理由指数排列,所以你不能有一个以上的。

但我不会建议使用复合聚集索引。为什么?因为聚集索引应该永远是:

  • 尽可能小 - INT 4个字节是完美
  • 稳定 - 不会改变,所以你不必通过所有的指标
  • 独特荡漾的更新做 - 否则,SQL Server将不得不“uniquify”与人工4个字节的条目值
  • 最佳的将是:不断增加

INT IDENTITY是完美的,因为聚集索引 - 我劝你把它THA t的方式。

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

阅读所有有关聚簇索引和他们应该在这里好聚集索引的内容:

+1

感谢您的时间! – GibboK 2010-07-09 12:13:44