我有一个简单的查询,大约需要7-8秒才能从数据库中检索数据,我想进一步微调2-3秒。
表:
UpdateDateTime | field1 | field2 |..... FieldN.
查询是:
Select *
from Table with (nolock)
where UpdateDateTime Between D1 and D2
Order By UpdateDateTIme
我在UpdateDateTime
可以做些什么来提高效率?
答案 0 :(得分:3)
减少返回的列数是明显的答案,然后在UpdateDateTIme
和INCLUDE
其他所选列上创建覆盖(非聚集)索引。
CREATE NONCLUSTERED INDEX NC_MyCoveringIndex
ON Table(UpdateDateTime)
INCLUDE (Col1, Col2, ..., ColN)
[注意:创建包含表格中所有列的广覆盖索引并不理想。]
很大程度上取决于WHERE
条款的选择性。如果它返回(大约)大于表中行数的10%,那么优化器可能只会扫描聚簇索引。
几乎就是这样。除此之外,您还需要了解一下您的硬件,以及您通过网络获取的数据量。