如果我有一个 SQL Server 表,在日期时间字段上有一个聚集索引,在插入之前设置为 DateTime.Now(来自 C#),索引应该升序还是降序以避免重新组织表?
谢谢。
如果我有一个 SQL Server 表,在日期时间字段上有一个聚集索引,在插入之前设置为 DateTime.Now(来自 C#),索引应该升序还是降序以避免重新组织表?
谢谢。
没关系 - 但 DateTime 真的保证是唯一的吗?我会避免只在 DateTime 上放置一个聚集索引 - 我会改用 INT IDENTITY 或 BIGINT IDENTITY,并在 DateTime 上放置一个常规的非聚集索引(因为这真的不能保证是唯一的......)
马克
PS:与主键一样,关于集群键应该是什么的普遍共识是:
构成聚集键的列(包括那个 4 字节唯一符)被添加到每个非聚集索引中的每个条目中 - 因此您希望尽可能保持这些列。
PS 2:聚集键被添加到每个非聚集索引,因为这是 SQL Server 在非聚集索引中找到搜索值后检索整行的方式。可以这么说,它是数据库中行的“位置”。因此,它应该是唯一的和狭窄的。
阅读此http://www.sqlskills.com/BLOGS/KIMBERLY/post/GUIDs-as-PRIMARY-KEYs-andor-the-clustering-key.aspx
如果读取经常基于日期时间字段,那么好的选择是日期和身份的复合键 - 按该顺序(日期,身份)。