Sql Var vs
TSQL'de problem çözme farklı yöntemlerle elde edilebilir ve istenen sonuçlar bunlardan herhangi biri kullanılarak görülebilir. Sonuçların elde edilmesinin yollarından biri IN ve EXISTS yan tümcelerini kullanmaktır. Cümlelerin kullanımı, mevcut bir alt sorguyu referans alarak sonuç kümesinin filtrelenmesine yardımcı olur. IN ve EXISTS'in yürütülmesi biraz farklıdır ve bu farklılıklar değerlendirilir..
IN veya EXISTS hizmetinin sunulup sunulmayacağını belirleyen çeşitli faktörler vardır. Bunlardan biri tablodaki veri miktarıdır. Büyük miktarda veri, SQL sunucusunun bir Dizin Araması kullanmak yerine bir dizin taraması kullanımına dönmesine neden olur.
farklılıklar
Verilen istatistikler, uyulması gereken yürütme planı hakkında da çok şey anlatıyor. Fark, sunucu geçerli bir karar verecek kadar istatistik topladığında ve ilk kez istatistik olmadığında gösterilir. Kullanılan donanım IN veya EXISTS'in kullanılıp kullanılmayacağını da belirler. Bu büyük ölçüde mevcut olan CPU sayısına bağlıdır.
EXISTS, bir sorgunun sonuçlarını başka bir alt sorguyla eşleştirmek gerektiğinde çalıştırılır. Öte yandan IN, bir liste içinde yer alan belirli sütunların değerlerini alırken kullanılır. Hangi kararı kullanacağınız yalnızca uygunluğa dayanır, yani kullanımının uygun olduğunu düşündüğünüzde.
Bir alt sorgunun kullanılması ve null değerinin döndürülmesi durumunda, ifadenin tamamı NULL olur. Bu aslında EXISTS anahtar kelimesinin kullanılmasına işaret eder. IN anahtar sözcüğünün kullanımı, alt sorgularda çeşitli değerlerin karşılaştırılması gerektiğinde ortaya çıkar. EXISTS anahtar sözcüğü, çoğunlukla doğru veya yanlış ifadelerin değerlendirilmesinde kullanılır ve IN, karşılık gelen alt sorgu ifadelerinin çoğunda kullanılır.
Genel olarak, EXISTS IN'den daha hızlı olacaktır, çünkü EXISTS çalıştırıldığında arama bir vuruş bulmuş ve durumun doğru olup olmadığını gözden geçirecektir. IN çalıştırıldığında, alt sorgudan tüm sonuçları toplar ve bunları daha sonraki işlemler için sunar ve bu işlem biraz zaman alır.
Sorgu ifadesinin doğru bir şekilde yapılması ve çalıştırılmadan önce kontrol edilmesi gerektiğini belirtmek önemlidir. Sorgunun, EXISTS ve IN için farklı değerler sunan doğru sonuçlar vermediğinden emin olmamanız ve bu, SQL sunucusunda kullanımlarının amacı değildir. Optimize edici, gerektiği gibi çalışırken her zaman optimum olmalıdır.
özet
TSQL'de problem çözme genellikle EXISTS ve IN ile yapılır.
EXISTS ve IN yayılırken küçük farklılıklar gözlenir, ancak her biri için optimizasyon aynı değeri vermelidir.
İstatistik, EXISTS'in veya IN'nin kullanıma sunulup sunulmayacağının belirleyicilerinden biridir.
Kullanılan donanım, EXISTS veya IN'nin dağıtılıp dağıtılmayacağının belirlenmesinde de kritik öneme sahiptir
Belirli bir sorgunun sonuçlarını başka bir alt sorgu ile ilişkilendirmek gerektiğinde EXISTS'in çalışması yararlı olacaktır. EXISTS, doğru veya yanlış ifadelerin değerlendirilmesi gerektiğinde de çok yaygındır.
IN genellikle bir listedeki belirli sütunları almaya ihtiyaç duyulduğunda kullanılır. Ayrıca, alt sorgularda değer karşılaştırması gerektiğinde yaygın olarak kullanılır.
EXISTS genellikle çalışırken, bir vuruş bulur ve koşulun doğru olup olmadığını incelerken IN'den daha hızlıdır
IN, alt sorgudan tüm sonuçları toplayıp işlediği için daha yavaştır.
Her ne kadar farklı uygulamalar mevcutsa da, optimizasyon EXISTS ve IN'de benzer sonuçlar vermelidir.