EXISTS performansı
- SQL kursu
- Orta seviye
- Ders 56/115
- 4 dk
EXISTS'in ne zaman daha hızlı olduğunu öğrenirsin.
EXISTS performansı
EXISTS ilk eşleşmede durduğu için büyük tablolarda hızlıdır. Alt sorgu tam çalışmaz.
SELECT name FROM customers c
WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.id);Bu sorgu ilk sipariş bulunca durur.
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 performansı — ayrıntı
EXISTS kısa devre yapar. IN ise tüm listeyi üretir. Büyük veride EXISTS tercih edilir.
Alt sorgudaki eşleşme sütununda (ör. orders.customer_id) bir indeks olması EXISTS'i belirgin şekilde hızlandırır.
Uygulama EXISTS performansı
Büyük orders tablosunda siparişi olan müşterileri EXISTS ile bul.
Başlangıç kodu
-- hızlı varlık
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 ne zaman durur?
- En sonunda
- Asla
- İlk eşleşmede Doğru cevap
- Hata verince
Açıklama: EXISTS ilk eşleşmede durur.
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, alt sorgu dış sorgudaki c.id'ye bağlı çalışan ilişkili bir alt sorgudur.
3 EXISTS performansı: kavramları eşleştir
| Kavram | Anlamı |
|---|---|
EXISTS |
hızlı |
kısa devre |
ilk eşleşme |
büyük |
çok satır |
IN |
tam liste |