Sql server 把索引放在datetime上!

Sql server 把索引放在datetime上!,sql-server,Sql Server,我有一个名为livesessionhistory的表,我根据datetime搜索它的记录。表的大小约为400000条记录。要提取这些记录需要花费太多的时间。所以我给datetime添加了一个索引。但不幸的是,该指数没有起到任何作用 此外,所有记录都是基于此日期时间搜索的,所以我可以将其设置为聚集索引吗 有些列有时会与datetime一起添加到搜索中,其中一个是可为空的long,我能将其添加到新的非聚集复合索引中吗 谢谢 Jamal.聚集索引可能会有所帮助,但也可能会因碎片而受阻,这取决于数据是否

我有一个名为livesessionhistory的表,我根据datetime搜索它的记录。表的大小约为400000条记录。要提取这些记录需要花费太多的时间。所以我给datetime添加了一个索引。但不幸的是,该指数没有起到任何作用

此外,所有记录都是基于此日期时间搜索的,所以我可以将其设置为聚集索引吗

有些列有时会与datetime一起添加到搜索中,其中一个是可为空的long,我能将其添加到新的非聚集复合索引中吗

谢谢
Jamal.

聚集索引可能会有所帮助,但也可能会因碎片而受阻,这取决于数据是否按顺序添加,以及随后对数据的编辑

仅在datetime上添加NC索引只会在非常狭窄的搜索中有所帮助,因为缺少现有的聚集索引,NC索引只有datetime和行地址,因此不太可能覆盖查询-因此,您的查询通常会忽略索引,只需扫描即可。金伯利·特里普(Kimberley Tripp)的《引爆点》(Tipping Point)一文是一本很好的读物,详细解释了如何/为什么/何时进行


如果您在2005版企业版上,您可以考虑根据您的日期范围划分表、每个月或1个分区,因为您的查询总是使用该列来实现一个理想的分区键,并且在管理数据(存档、备份等)

时提供您的好处,尽管列类型是DATETIME,当我搜索时,我可以跳过它的时间部分。发布精确的表结构、索引定义(全部)和正在运行的精确查询。