SQL'de WHERE ve JOIN Farkı: Hangisini Ne Zaman Kullanmalı
SQL öğrenenlerin sık yaptığı hata, WHERE ve JOIN'i karıştırmak ya da yanlış durumda kullanmaktır. İkisi de verileri filtrelemek için görünse de, amaçları ve sonuçları tamamen farklıdır.
WHERE bir koşul koyar. Bir tablodan sadece belirli satırları seçmek istiyorsan WHERE kullanırsın. Örneğin müşterilerden sadece İstanbul'dakiler:
1SELECT * FROM musteri WHERE sehir = 'İstanbul';JOIN ise iki tabloyu birleştirir. Müşteri tablosundaki her satırı, sipariş tablosundaki ilgili satırlarla eşleştirir. Müşteri adı ve onun siparişlerini birlikte görmek istersen:
1SELECT musteri.ad, siparis.tarih 2FROM musteri 3INNER JOIN siparis ON musteri.id = siparis.musteri_id;Burada önemli nokta: WHERE tabloyu daraltır, JOIN'i genişletir. WHERE sonrası satır sayısı azalır. JOIN sonrası sütun sayısı artar.
Performans açısından da fark vardır. WHERE, veritabanı motoru tarafından hızlı filtrelenir. Ama WHERE'i JOIN'den sonra koyarsan (WHERE... AND...), önce birleştirme yapılır, sonra filtreleme. Bu büyük tablolarda yavaş olabilir. Doğru sıra: önce WHERE ile tabloları küçült, sonra JOIN yap.
Praktik ipucu: Bir tablodan satır seçmek için WHERE. Birden fazla tablodan ilişkili veri almak için JOIN. İkisini birlikte kullanırsan da, WHERE koşulunu JOIN'den önce yazarak sorguyu optimize edebilirsin.
0 yorum