Gerçek işte sorgular uzundur
Bir şirketin aylık yönetim raporu, dolandırıcılık kuralları ya da veri ambarı yüklemesi nadiren tek bir SELECT ile biter. Çoğu 5–10 adımlı bir boru hattıdır: her adım bir öncekinin çıktısını alır, biraz dönüştürür ve bir sonrakine verir. Bu modüldeki her ders böyle bir sorguyu baştan sona kurar.
Beş kural
- Her CTE tek bir iş yapsın ve adı o işi söylesin:
ilk_siparis,aylik_ciro,segment. - Her adımın taneciğini bil: “bir satır = bir müşteri × ay” gibi. Tanecik değiştiğinde (gruplama) bunu yorumla yaz.
- Satır sayısını kontrol et: Her CTE'den sonra
SELECT COUNT(*)ile beklenen satır sayısını doğrula. JOIN sonrası beklenmedik artış, satır çoğalmasıdır. - Filtreyi erken uygula: Tarih aralığı ve durum filtrelerini ilk CTE'de yaz; sonraki adımlar daha az veriyle çalışır.
- Son SELECT sunumdur: Yuvarlama, Türkçe sütun adları ve sıralama en sonda yapılır; ara adımlar ham değer taşır.
Hata ayıklama: sondan değil, baştan
Sonuç yanlışsa son SELECT'i değil, ilk CTE'yi incele. Her adımı tek tek çalıştır; sayıların nerede saptığını bul. Aşağıdaki iskelet her büyük sorgunun başlangıç noktasıdır:
WITH adim1 AS (...), -- satır sayısı: ?
adim2 AS (...), -- satır sayısı: ?
adim3 AS (...)
SELECT * FROM adim2 LIMIT 20; -- incelediğin adımı buraya yaz
PerformansBüyük sorguyu hızlandırmanın en etkili yolu, ilk adımda ihtiyaç duyulan satır ve sütunlara inmektir. Planı okumadan önce “hangi adımda kaç satır var?” sorusunu cevapla.