首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用索引加速Server 2008查询

使用索引加速Server 2008查询
EN

Stack Overflow用户
提问于 2014-04-29 09:24:46
回答 2查看 392关注 0票数 0

我有一个如下的查询

代码语言:javascript
复制
    Select top(10) *
    from myTable
    where CreateTime between '2014-2-3' and '2014-2-5' 
    and (Result is null or Result != 1) 

但是当我构建一个如下所示的索引

代码语言:javascript
复制
    CREATE NONCLUSTERED INDEX [IX_Index] ON [dbo].[mytable] 
    (
[CreateTime] ASC,
    Result ASC
    )
    INCLUDE ( [ID])

(ID是mytable的主键)

Sql server不使用该索引。

如何加快上述查询的速度?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-29 09:31:47

尝试简单地构建索引,如

代码语言:javascript
复制
CREATE NONCLUSTERED INDEX [IX_Index] ON [dbo].[mytable] 
(
   [CreateTime]
)

由于您正在CreateTime上进行过滤,所以只需在该列上构建一个覆盖索引即可。我认为向索引中添加Result无助于查询。

此外,您也不必在索引中包括主键列,SQL Server会自动这样做。

票数 0
EN

Stack Overflow用户

发布于 2014-04-29 09:31:32

如果要强制sql服务器使用特定索引,请尝试使用。

代码语言:javascript
复制
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) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23360641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档