1

我想我会再尝试一次..

我见过有人说 <> 是可搜索的,<> 是不可搜索的,等等,抱歉,但我想澄清一下。我还想要一个似乎不可能得到的是一个使用 <> 的错误查询和一个使用不同运算符的更 SARGable 查询的示例。我已经看到有关如何进行大量查询 SARGable 的示例,但没有使用 <> 运算符的示例。

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

谢谢..

4

2 回答 2

6

该运算符<>是 SARGable,但根据您要比较的内容,它可能无济于事。

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

“很少提高性能的 Sargable 运算符:<>、IN、OR、NOT IN、NOT EXISTS、NOT LIKE”

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

数据库可以通过<>运算符使用索引的查询将是如果它是非唯一索引,并且列中几乎没有不同的值,因此可以使用索引消除许多记录,而不仅仅是单个或几条记录。

于 2013-03-18T18:00:17.800 回答
0

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

Sargable 运算符:=,>,<,>=,<=,BETWEEN,LIKE 不带前导 %

很少提高性能的 Sargable 运算符:<>、IN、OR、NOT IN、

NOT EXISTS, NOT LIKE Non-sargable 运算符:LIKE 带前导 %

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

于 2013-03-18T17:56:44.657 回答