Sql 查询微调
我有一个简单的查询,从数据库中检索数据大约需要7-8秒,我想进一步微调到2-3秒 表:Sql 查询微调,sql,sql-server-2008,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 如何进一步提高其效率?减少返回的列数是显而易见的答案,然
UpdateDateTime | field1 | field2 |..... FieldN.
查询是:
Select *
from Table with (nolock)
where UpdateDateTime Between D1 and D2
Order By UpdateDateTIme
我已在UpdateDateTime
如何进一步提高其效率?减少返回的列数是显而易见的答案,然后在
UpdateDateTIme
上创建一个覆盖(非聚集)索引,并包含其他选定列
CREATE NONCLUSTERED INDEX NC_MyCoveringIndex
ON Table(UpdateDateTime)
INCLUDE (Col1, Col2, ..., ColN)
[注意:创建包含表中所有列的广泛覆盖索引并不理想。]
很大程度上取决于WHERE
子句的选择性。如果它返回的行数(大约)大于表中行数的10%,那么优化程序可能只是扫描聚集索引
差不多就是这样。除此之外,您还需要查看您的硬件,以及您正在传输的数据量。但我需要所有字段。你能告诉我如何创建覆盖索引吗?是:在Include()上创建索引你不应该在所有列上创建覆盖索引。不理想。是的,这就是语法。它取决于很多很多事情。你的服务器设备好吗?您正在通过internet运行查询吗?