1

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

桌子 :

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

查询是:

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

我创建了聚集索引UpdateDateTime

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

4

1 回答 1

3

UpdateDateTIme 减少返回的列数是显而易见的答案,然后INCLUDE在其他选定列上创建覆盖(非聚集)索引。

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

参考

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

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

差不多就是这样。除此之外,您还需要查看您的硬件,以及您通过网络传输了多少数据。

于 2012-12-24T08:52:12.320 回答