是<> SARGable与否?如果没有,我可以使用什么呢?

时间:2013-03-18 17:49:41

标签: sql

我想再试一次......

我见过有人说<>是sargable,<>不是苛刻等等,对不起,但我要澄清一下。而我想要的似乎无法获得的是使用<>的错误查询的示例以及使用不同运算符的更SARGable查询。我已经看到了关于如何进行大量查询SARGable的示例,但没有使用<>的示例操作

我已经尝试过一次问这个问题,因为他们认为这不是一个真正的问题,所以它必须在人们头上,但这是一个真正的问题,我想要一个真正的答案,如果我得到一个真正的答案,那么我可以查看我的所有存储过程并更好地决定要更改哪些过程。

谢谢..

2 个答案:

答案 0 :(得分:6)

运算符<>是SARGable,但根据您所比较的内容,它可能没什么用。

参考:http://en.wikipedia.org/wiki/Sargable

  

“很少提高性能的Sargable运营商:&lt;&gt ;,IN,OR,NOT IN,   不存在,不喜欢“

=这样的运算符更有可能提供良好的性能,因为数据库可以从索引中查找单个或有限数量的记录。当您使用<>运算符时,数据库通常必须扫描整个索引以获取相关记录。

数据库可以对<>运算符使用索引的查询是否是非唯一索引,并且列中的值很少,因此可以使用多个记录来消除索引,而不仅仅是一个或几个记录。

答案 1 :(得分:0)

维基百科说它是一个很难提高性能的Sargable运算符

  

Sargable运营商:=,&gt;,&lt;,&gt; =,&lt; =,BETWEEN,LIKE没有领先%

     

很少提高性能的可攻击运营商:&lt;&gt;,IN,OR,NOT IN,

     

NOT EXISTS,NOT LIKE非sargable运算符:与前导%

相似

http://en.wikipedia.org/wiki/Sargable