我有一个如下的查询
Select top(10) *
from myTable
where CreateTime between '2014-2-3' and '2014-2-5'
and (Result is null or Result != 1) 但是当我构建一个如下所示的索引
CREATE NONCLUSTERED INDEX [IX_Index] ON [dbo].[mytable]
(
[CreateTime] ASC,
Result ASC
)
INCLUDE ( [ID])(ID是mytable的主键)
Sql server不使用该索引。
如何加快上述查询的速度?
发布于 2014-04-29 09:31:47
尝试简单地构建索引,如
CREATE NONCLUSTERED INDEX [IX_Index] ON [dbo].[mytable]
(
[CreateTime]
)由于您正在CreateTime上进行过滤,所以只需在该列上构建一个覆盖索引即可。我认为向索引中添加Result无助于查询。
此外,您也不必在索引中包括主键列,SQL Server会自动这样做。
发布于 2014-04-29 09:31:32
如果要强制sql服务器使用特定索引,请尝试使用。
Select top(10) *
from myTable WITH (INDEX(IX_Index))
where CreateTime between '2014-2-3' and '2014-2-5'
and (Result is null or Result != 1) https://stackoverflow.com/questions/23360641
复制相似问题