2009-06-25 84 views

回答

27

真的没关系 - 但是DateTime真的保证是唯一的吗?我会避免把聚集索引放在DateTime上 - 我会使用INT IDENTITY或BIGINT IDENTITY,并在DateTime上放置一个常规的非聚集索引(因为这实际上并不保证它是唯一的......)

马克

PS:就像一个主键,在聚集键应该是什么普遍的共识是:

  • 独特(否则SQL服务器“uniquify”,加入4-将它字节uniqueifier)
  • as 尽可能
  • 静态(永远不变)
  • 不断增加

的组成聚集键(包括4字节uniqueifier)被加入到塔(S)在每个非聚集索引中每次输入 - 所以你想保持尽可能苗条。

PS 2:聚簇键被添加到每个非聚簇索引,因为这是SQL Server在非聚簇索引中找到搜索值后将检索整行的方式。这就是数据库中该行的“位置”,可以这么说。因此,它应该是独一无二的,而且应该是缩小的

+0

因此聚集索引需要是唯一的? – Eyvind 2009-06-25 14:27:16

+4

如果* NOT *唯一,那么SQL Server会自动添加一个4字节的“唯一性” - 如果可能的话,尽量避免! – 2009-06-25 14:27:57