EXISTS vs IN
- SQL kursu
- Orta seviye
- Ders 55/115
- 4 dk
EXISTS ve IN farkını öğrenirsin.
EXISTS vs IN
EXISTS varlık denetler, IN liste içinde arar. EXISTS büyük listelerde hızlıdır.
-- EXISTS
SELECT name FROM customers c
WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);IN'e göre daha verimli olabilir.
customers c kaynağından name seçilir. WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id) koşulunu sağlamayan satırlar elenir.
EXISTS vs IN — ayrıntı
IN alt sorgunun tüm sonucunu belleğe yükler. EXISTS ilk eşleşmede durur. NULL sorunundan etkilenmez.
Özellikle NOT IN, alt sorgu bir NULL döndürürse hiç satır getirmez; NOT EXISTS bu tuzağa düşmez.
Uygulama EXISTS vs IN
Siparişi olan müşterileri EXISTS ile bul (IN yerine).
Başlangıç kodu
-- exists ile
SELECT name FROM customers c
WHEREÖrnek çözüm
SELECT name FROM customers c
WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);Beklenen çıktı
name Ayşe Mehmet
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 EXISTS vs IN: kavramları eşleştir
| Kavram | Anlamı |
|---|---|
EXISTS |
varlık |
IN |
liste |
hızlı |
ilk eşleşme |
NULL |
boş |
2 EXISTS ekle
SELECT name FROM customers c
WHERE ____ (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
SELECT name FROM customers c
WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
Açıklama: EXISTS ilk eşleşen satırı bulunca durur, bu yüzden büyük tablolarda hızlıdır.
3 Hangisi NULL'dan etkilenmez?
- IN
- EXISTS Doğru cevap
- ANY
- ALL
Açıklama: EXISTS NULL sorunundan etkilenmez.