MSSQL强制取消某个索引的使用

来源:互联网 发布:vscode emmet 编辑:程序博客网 时间:2024/06/02 06:23

MSSQL数据库引擎会自动优化SQL语句,自动选数据库引擎认为最好的索引来运行SQL语句。当然,大部分时候由SQL引擎优化没有问题,只是有时候它也会选出一个不是最优的索引。所以有必须人为干预一下SQL引擎的优化,把SQL引擎的优化导向你要的索引。

SQL例子:

select * from shoppingcart where customerid =112233 and orderdate>='2013-01-01 00:00:00'

以上的例子里,customerid和orderdate都有所以。如果我想SQL引擎使用customerid的索引,我们可以把SQL语句写成:

select * from shoppingcart where customerid =112233 and orderdate+0>='2013-01-01 00:00:00'

以上的SQL里,我们把orderdate+0,就是把这个字段变成一个计算的字段,这个时候索引就自动失效,因为每个字段的比较都要运算一次,所以不能使用索引。这时候,SQL引擎就会寻找下一个优化的索引。


同样的道理,如果我们要取消customerid索引的使用,我们就可以把SQL语句写成:

select * from shoppingcart where customerid+0 =112233 and orderdate>='2013-01-01 00:00:00'


0 0
原创粉丝点击