CodeBlanks Logo Icon CodeBlanks

EXISTS performansı

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

query.sql
-- hızlı varlık
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 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

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, 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

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