pl/sql de in ve exists kullanımı ve arasındaki fark
Merhaba pl/sql de in ve exists kullanımına birer örnek.
SELECT t1.column_1, t1.column_2 FROM table_1 t1 WHERE t1.column_1 IN (SELECT t2.column_3 FROM table_2 t2); SELECT t1.column_1, t1.column_2 FROM table_1 t1 WHERE t1.column_1 NOT IN (SELECT t2.column_3 FROM table_2 t2); SELECT t1.column_1, t1.column_2 FROM table_1 t1 WHERE EXISTS (SELECT * FROM table_2 t2 WHERE t1.column_1 = t2.column_3); SELECT t1.column_1, t1.column_2 FROM table_1 t1 WHERE NOT EXISTS (SELECT * FROM table_2 t2 WHERE t1.column_1 = t2.column_3);
Bu kullanımları biraz açıklamak gerekirse yazılan bir sql de in kullanımı ile exists kullanımı basit bir sql de performans olarak çok fazla ayırt edilemez.Ama daha yoğun bir sql yazıldığında in ve exists kullanımı arasındaki performans farkı ortaya çıkacaktır.Peki nedir bu in ve exists arasındaki fark.Hemen anlatalım.
in yazılan subquery den dönen tüm kayıtlar içinde eşleme yaptıktan sonra ana query nin çalışmasını tamamlar.
exists ise subquery yi eşleme yapılan kayıtlara göre sonuçlandırır ve ilave olarak gelen kayıtlar içinde eşleme yapmaya gerek kalmaz.exists zaten subquery den ihtiyacı olan kayıtları getirmiş olacaktır.
Bu yüzden yoğun sql lerde performans sağlanması için in yerine exists kullanımı tercih edilmektedir.
Bir iki sey eklemek isterim
exists de condition ifadeleri kullanabiliyoruz bu yuzden biraz daha kullanislidir.
Birde profesyonel acidan daha uygun exists.
BeğenBeğen