在非常宽的表上索引datetime列

时间:2015-12-10 22:23:05

标签: sql-server tsql datetime indexing query-optimization

我在SQL Server 2012中拥有大约400列和400万行的表。 报告工具使用此表的唯一目的。每晚通过预定的作业刷新(删除并重新创建)此表。所以没有更新/插入/删除。 有一个Date列,Datetime作为数据类型。我在这个日期列上创建了一个聚簇索引,但它似乎只有一点帮助。(在where子句上没有任何其他条件,所以我没有在索引中包含任何其他列) 报告工具发送的查询就像

选择*(列出所有列) 来自mytable 其中日期> ='01/01/2010'和日期< ='12/01/2010'

大约需要10分钟来检索所有超过上述日期范围的行,大约是一百万行。

如果我能做到或尽我所能,我需要在一分钟内得到这个。 如果我能得到一些可能有助于我实现这一点的想法。我将不胜感激。

我尝试了以下但没有显着的性能提升。     -change数据类型为'Date'/'varchar'/'int'来自'Datetime'      - 在同一列上创建非聚集索引     -create clustered / nonclustered index包括其他列以使其唯一

1 个答案:

答案 0 :(得分:0)

1亿行可能只是一个数据量的东西 试试:

select count(*) from mytable where date>='01/01/2010' and date <='12/01/2010'

如果这很快,那么它不是索引问题