我有一个简单的查询,这需要大约7-8秒从数据库中检索数据,我想进一步微调到2-3秒。
表:
UpdateDateTime | field1 | field2 |..... FieldN.
查询为:
Select *
from Table with (nolock)
where UpdateDateTime Between D1 and D2
Order By UpdateDateTIme
我已经在UpdateDateTime
上创建了聚集索引
可以进一步做些什么来提高其效率?
发布于 2012-12-24 16:52:12
减少返回的列数是显而易见的答案,然后在UpdateDateTIme
上创建一个覆盖(非聚集)索引,并对其他选定的列执行INCLUDE
。
CREATE NONCLUSTERED INDEX NC_MyCoveringIndex
ON Table(UpdateDateTime)
INCLUDE (Col1, Col2, ..., ColN)
Ref。
注意:创建一个包含表中所有列的覆盖范围很广的索引并不理想。
这在很大程度上取决于您的WHERE
子句的选择性。如果它返回的行数(大约)大于表中行数的10%,那么优化器可能只会扫描聚集索引。
差不多就是这样。除此之外,您还需要查看您的硬件,以及您通过网络提取了多少数据。
https://stackoverflow.com/questions/14019145
复制相似问题