İçeriğe geç

SQL Sub Query Ve Join Işlemi Arasında Performans Testi

Elimizde iki tablolu bir yapı olduğunu düşünelim, İşçiler ve Yöneticiler. Üç adet yöneticimiz ve bu yöneticilere bağlı 60000 çalışanımız olsun. Yöneticilere ait olan işçi sayılarına baktığımızda :

Select COUNT(*),yoneticiID
From tblIsci
Group By yoneticiID
Order By yoneticiID
Yonetici IDİşçi Sayısı
140000
219999
31

İlk olarak 1 adet işçinin bağlı olduğu ID si 3 olan yöneti ve işçi bilgilerini sorgulayalım.

SıraSQL SorgusuSonuç
1SELECT isciID, isciAdi, (SELECT yoneticiAdi FROM tblYonetici WHERE tblYonetici.yoneticiID = tblIsci.yoneticiID) FROM tblIsci WHERE tblIsci.yoneticiID = 3 Etkilenen Satır Sayısı : 1Sorgu Maaliyeti : 0.0006
2SELECT isciID, isciAdi, yoneticiAdi FROM tblIsci INNER JOIN tblYonetici ON (tblYonetici.yoneticiID = tblIsci.yoneticiID) WHERE tblIsci.yoneticiID = 3 Etkilenen Satır Sayısı : 1Sorgu Maaliyeti : 0.0006

Yukarıdaki 1 ve 2 numaralı testleri incelediğimizde etkilenen satır sayısı ve sorgu maaliyetleri aynı oldu. Şimdi birde etkilenen satır sayısı arttığında sorgu maaliyetinde bir değişme olacak mı ? bunu gözlemleyelim.

SıraSQL SorgusuSonuç
3SELECT isciID, isciAdi, (SELECT yoneticiAdi FROM tblYonetici WHERE tblYonetici.yoneticiID = tblIsci.yoneticiID) FROM tblIsci WHERE tblIsci.yoneticiID = 1 Etkilenen Satır Sayısı : 40000Sorgu Maaliyeti : 4.326
4SELECT isciID, isciAdi, yoneticiAdi FROM tblIsci INNER JOIN tblYonetici ON (tblYonetici.yoneticiID = tblIsci.yoneticiID) WHERE tblIsci.yoneticiID = 1 Etkilenen Satır Sayısı : 40000Sorgu Maaliyeti : 0.305

3 ve 4 numaralı testlerimize baktığımızda etkilenen satır sayıları eşit ve 40000, ama bu sefer sorgu maaliyetleri Join işleminde düşük çıktı.

Sonuç olarak kullanacağımız sorgularda eğer farklı tablolardan veriler ile çalışıyor ve etiklenecek olan satır sayısının büyük olacağını kestirebiliyorsak Join işlemlerini Sub Query işlemlerine tercih etmeliyiz.

Kategori:SQLUygulama Geliştirme

Bu yazı yorumlara kapalı.