2010-07-08 127 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