如果我在日期时间字段上具有聚集索引的SQL Server表,它在插入之前设置为DateTime.Now(来自C#),如果索引是升序或为了避免重组桌面而下降?SQL Server:日期时间,ASC或DESC上的聚集索引
谢谢。
如果我在日期时间字段上具有聚集索引的SQL Server表,它在插入之前设置为DateTime.Now(来自C#),如果索引是升序或为了避免重组桌面而下降?SQL Server:日期时间,ASC或DESC上的聚集索引
谢谢。
真的没关系 - 但是DateTime真的保证是唯一的吗?我会避免把聚集索引放在DateTime上 - 我会使用INT IDENTITY或BIGINT IDENTITY,并在DateTime上放置一个常规的非聚集索引(因为这实际上并不保证它是唯一的......)
马克
PS:就像一个主键,在聚集键应该是什么普遍的共识是:
的组成聚集键(包括4字节uniqueifier)被加入到塔(S)在每个非聚集索引中每次输入 - 所以你想保持尽可能苗条。
PS 2:聚簇键被添加到每个非聚簇索引,因为这是SQL Server在非聚簇索引中找到搜索值后将检索整行的方式。这就是数据库中该行的“位置”,可以这么说。因此,它应该是独一无二的,而且应该是缩小的。
阅读本http://www.sqlskills.com/BLOGS/KIMBERLY/post/GUIDs-as-PRIMARY-KEYs-andor-the-clustering-key.aspx
如果阅读是常常以日期时间字段,不错的选择是日期和身份的复合键 - 按顺序(日期,身份证)。
因此聚集索引需要是唯一的? – Eyvind 2009-06-25 14:27:16
如果* NOT *唯一,那么SQL Server会自动添加一个4字节的“唯一性” - 如果可能的话,尽量避免! – 2009-06-25 14:27:57