CodeBlanks Logo Icon CodeBlanks

EXISTS vs IN

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

query.sql
-- exists ile
SELECT name FROM customers c
WHERE

Örnek çözüm

query.sql
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

Soru
SELECT name FROM customers c
WHERE ____ (SELECT 1 FROM orders o WHERE o.customer_id = c.id);
Cevap
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.

Orta seviye bölümündeki tüm dersler