MS Sql sunucusunun, gereksiz kontrollerden kaçınarak performansı artırmak için Kısa devre teorisini desteklediği açıktır.
Destekleyici Örnek:
SELECT 'TEST'
WHERE 1 = 'A'
SELECT 'TEST'
WHERE 1 = 1 OR 1 = 'A'
Burada ilk örnek, 'A' varchar değeri veri türü int'e dönüştürülürken dönüşüm başarısız oldu 'hatasıyla sonuçlanır.
İkincisi 1 = 1 koşulu TRUE olarak değerlendirildiğinden kolayca çalışır ve bu nedenle ikinci koşul hiç çalışmaz.
Daha fazlası
SELECT 'TEST'
WHERE 1 = 0 OR 1 = 'A'
burada ilk koşul yanlış olarak değerlendirilir ve bu nedenle DBMS ikinci koşul için gider ve yine yukarıdaki örnekte olduğu gibi dönüştürme hatası alırsınız.
NOT: HATA KOŞULLARINI, HATA DÜZENLENMİŞ DURUMUNUN YÜRÜTÜLMESİ, KISA DEVRE DIŞI BIRAKMA DURUMUNDA YÜRÜRLÜĞE VEYA KISA DEVREYE ALMAK GEREKEN SADECE HÜKÜMLÜ KOŞULUYORUM.
BASİT AÇIKLAMA
Düşünmek,
WHERE 1 = 1 OR 2 = 2
ilk koşul TRUE olarak değerlendirilirken, ikinci koşulu değerlendirmek anlamsızdır, çünkü hangi değerde olursa olsun değerlendirilmesi sonucu etkilemez, bu nedenle Sql Server'ın gereksiz koşul kontrolünü veya değerlendirmesini atlayarak Sorgu Yürütme zamanından tasarruf etmesi için iyi bir fırsat .
durumunda "VEYA" ilk koşulu ise değerlendirilir eğer TRUE ile bağlı tüm zinciri "VEYA" başkalarını değerlendirilmeden true değerlendirilen olarak kabul ederim.
condition1 OR condition2 OR ..... OR conditionN
koşul1 doğru olarak değerlendirilirse, koşulN atlanana kadar tüm koşulları dinlendirin. İlk TRUE'nun belirlenmesinde genelleştirilmiş kelimelerde, OR ile bağlantılı diğer tüm koşullar atlanır.
İkinci koşulu düşünün
WHERE 1 = 0 AND 1 = 1
ilk koşul FALSE olarak değerlendirilirken ikinci koşulu değerlendirmek anlamsızdır, çünkü hangi değerde olursa olsun değerlendirilmesi sonucu etkilemez, bu nedenle Sql Server'ın gereksiz koşul kontrolünü veya değerlendirmesini atlayarak Sorgu Yürütme zamanından tasarruf etmesi için iyi bir fırsat .
durumunda "AND" ilk koşulu ise değerlendirilir eğer FALSE ile bağlı tüm zinciri "AND" başkalarını değerlendirilmeden YANLıŞ olarak değerlendirilen olarak kabul ederim.
condition1 AND condition2 AND ..... conditionN
koşul1 için değerlendirilir eğer FALSE , kadar tüm koşullar dinlenme conditionN atlanır olurdu. İlk YANLIŞ'ın belirlenmesindeki genel kelimelerle, AND ile bağlantılı tüm diğer koşullar atlanır.
BU NEDENLE, BİR BİLİŞİM PROGRAMCISI HER ZAMAN KOŞULLARIN ZİNCİRİNİ KADAR DAHA AZ DÜŞÜK VEYA EN ÇOK KALDIRICI KOŞULLARIN DEĞERLENDİRİLMESİNİ GERÇEKLEŞTİRMELİ VEYA KOŞULU DAHA AZ ŞEKİLDE GERÇEKLEŞTİRMEK GEREKİR.