查询微调

时间:2012-12-24 08:51:03

标签: sql sql-server-2008

我有一个简单的查询,大约需要7-8秒才能从数据库中检索数据,我想进一步微调2-3秒。

表:

UpdateDateTime | field1 | field2 |..... FieldN.

查询是:

Select *  
from Table with (nolock)  
where UpdateDateTime Between D1 and D2  
Order By UpdateDateTIme  

我在UpdateDateTime

上创建了聚集索引

可以做些什么来提高效率?

1 个答案:

答案 0 :(得分:3)

减少返回的列数是明显的答案,然后在UpdateDateTImeINCLUDE其他所选列上创建覆盖(非聚集)索引。

CREATE NONCLUSTERED INDEX NC_MyCoveringIndex 
   ON Table(UpdateDateTime)
      INCLUDE (Col1, Col2, ..., ColN)

Ref

[注意:创建包含表格中所有列的广覆盖索引并不理想。]

很大程度上取决于WHERE条款的选择性。如果它返回(大约)大于表中行数的10%,那么优化器可能只会扫描聚簇索引。

几乎就是这样。除此之外,您还需要了解一下您的硬件,以及您通过网络获取的数据量。