SQL Server查询提示(2):索引提示

索引提示一般用来强制查询使用特定索引,或者强制使用索引的方式。


(1)使用特定的索引

有时候,发现一个查询很慢,然后创建了一个索引,照理,查询应该用这个索引,但实际执行的时候,执行计划却没有用到这个索引,怎么办呢?

首先,可以尝试更新下统计信息。

其次,如果更新完统计信息后,还是没用到索引,这种情况下,可以考虑强制使用索引提示。

使用方法:

select * from A where id with(index(A表的索引名称)) between 10000 and 10005


但在使用之前,一定要注意,如果以后这个索引删除了,而这个提示还是在sql中,就会导致sql报错。


(2)使用索引的方式

索引使用方式,包括:index seek(索引查找),index scan(索引扫描),针对聚集索引和非聚集索引,还可以进一步细分。

接着上面第1点,继续往下说。


如果用了上面的强制索引,照理应该用索引查找,但是生成的执行计划并不是index seek,而是索引扫描,导致执行速度还是很慢,咋办呢?

SQL Server 2008R2版本:

select * from A where id with(forceseek , index(A表的索引名称)) between 10000 and 10005


2012后的版本:

select * from A where id with( index(A表的索引名称),forceseek(索引名称(索引中的列))) between 10000 and 10005


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值