2013-03-02 41 views

cevap

31

<> o It "eşit değil" var !=

+0

İşlevsel olarak aynı oldukları doğru. Ancak, SQL iyileştiricinin bunları nasıl kullandığı çok farklı. = /! = doğru/yanlış olarak değerlendirilirken <>, motorun değerinin daha büyük ya da daha az olup olmadığına bakması ve daha fazla performans yükü anlamına geldiği anlamına gelir. Sadece pahalı olabilecek sorguları yazarken dikkate alınması gereken bir şey. –

+12

Bu ifadenin doğru olduğuna inanmıyorum, işleçler işlevsel olarak eşdeğerdir, <>< and >'un bir birleşimi değildir, kendi başına, eşit olmayan bir operatördür. Optimiser, değerden daha büyük veya daha az olsaydı neden umursadı? kontrol etmesi gereken tek şey, bir şeye eşit olmamasıdır. – steoleary

+3

Bunu, sahip olduğumuz birkaç saklı yordamda kanıtladım. Her şey masanın üzerinde bulunan dizinlere bağlıdır. <> Kullanırken, motorun, daha büyük veya daha küçük olan tüm değerleri taradığını/aradığını düşünüyorum. Kullandığımızda! =, Tanımladığınızla eşit olmayan tüm değerler için gider. Bazı işlemlerimizde 30 dakikadan 3 dakikaya kadar performans artışları gördük. Yine, herkesin ortamları/dizinleri farklıdır, ancak indeksli sütunlarda <> operatörleri SARGable olmadıkları için kullanmaktan kaçınmaya çalışırız. Bkz .: http://www.sql-server-pro.com/sql-where-clause-optimization.html –

7

aynıdır, eşit değildir. Kullandığınız veritabanı için operatörlerin listesine bakın ve uygun bölümü bulun (genellikle "karşılaştırma operatörleri"). Örneğin:

4

Bu not equals operatördür. Kullanımı:

select * 
from table 
where foo <> 0 
2

O Değil Eşit operatörü, ama henüz yeterince karakter girmediğiniz için cevabım yayınlanmıştır almak için ayrıntılı olmak zorunda gidiyorum. İki işlenen değerlerin eşit olup olmadıklarını değerleri koşul doğru olur sonra eşit değilse

1

<>, eşit olmayan aynı != olarak

0

kontrol eder anlamına gelir. (bir <> b) veya (a! = b) doğrudur.

İlgili konular