2013-03-02 73 views

回答

31

<>不等於,這是一樣的!=

+0

確實,它們在功能上是相同的。但是,SQL優化器如何使用它們是非常不同的。 = /!=被簡單評估爲真/假,而<>意味着引擎必須查看並查看該值是大於還是小於,這意味着更多的性能開銷。在編寫可能很昂貴的查詢時需要考慮一些事情。 – 2014-06-30 18:25:24

+12

我不認爲這種說法是正確的,運營商在功能上是等效的,<>不是< and >的組合,它是一個獨特的運營商,而不是它自己的權利。爲什麼優化器會關心它是大於還是小於值?所有它必須檢查的是它不等於某件事。 – steoleary 2014-07-01 09:06:00

+3

我已經在我們擁有的幾個存儲過程中證明了這一點。這一切都取決於表格上存在的索引。當您使用<>時,我相信引擎會掃描/查找所有大於或小於的值。當我們使用!=時,它只適用於所有與您定義的值不相同的值。我們在這裏的幾個程序中已經看到從30分鐘到3分鐘的性能提升。同樣,每個人的環境/索引都不相同,但我們儘量避免在索引列上使用<>運算符,因爲它們不是SARGable。請參閱:http://www.sql-server-pro.com/sql-where-clause-optimization.html – 2014-07-01 12:20:16

7

這是「不等於」。查看你正在使用的數據庫的運算符列表,並找到適當的部分(通常是「比較運算符」)。例如:

4

它是not equals運算符。 用法:

select * 
from table 
where foo <> 0 
2

它是不等於運營商,但我將必須詳細到讓我的答案張貼,因爲我還沒有輸入足夠的字符呢。

1

<>意味着不等於相同!=

0

檢查是否兩個操作數的值相等與否,如果值不相等,則條件變爲真。 (a <> b)或(a!= b)爲真。