Senaryo
Ilgaz Bank kart ekibi her ay müşteri başına kart harcaması raporu alıyor. Rapor yıllar içinde büyüdü, çalışırken ekran bekliyor. Birim yöneticisi soruyor: "Bu raporu hızlandırabilir miyiz? Ne kadar güvenle, karşılığında ne ödeyerek?" Senden sonuç değişmeden hızlandırılmış sorgu ve bir karar notu bekleniyor.
Rapor
SELECT DISTINCT c.customer_id, c.segment,
(SELECT COUNT(*) FROM bank_txns t
WHERE t.account_id IN (SELECT a.account_id FROM bank_accounts a WHERE a.customer_id = c.customer_id)
AND strftime('%Y-%m', t.txn_time) = '2024-12' AND t.txn_type = 'kart_harcama') AS islem,
(SELECT ROUND(SUM(t.amount)) FROM bank_txns t
WHERE t.account_id IN (SELECT a.account_id FROM bank_accounts a WHERE a.customer_id = c.customer_id)
AND strftime('%Y-%m', t.txn_time) = '2024-12' AND t.txn_type = 'kart_harcama') AS toplam
FROM bank_customers c
JOIN bank_accounts x ON x.customer_id = c.customer_id;
Çalıştır ve süreye bak. Bu süre bu tarayıcıda ölçülür, kendi ortamında farklı olur. Karşılaştırmayı süre yerine plana ve sağlamaya dayandıracağız.
Veri
| Tablo | Satır | Mevcut indeks |
|---|---|---|
bank_customers | 500 | Birincil anahtar |
bank_accounts | 849 | Birincil anahtar |
bank_txns | 42.284 | Birincil anahtar, account_id |
Adımlar
| Adım | Çıktı |
|---|---|
| 1. Temel ölçüm | Satır sayısı, işlem toplamı, tutar toplamı: her değişiklik bunlarla sağlanır |
| 2. Plan | Eski raporun planı |
| 3. Darboğaz | Hangi satır sorun, neden |
| 4. Çekirdek sorgu | Aylık toplam, aranabilir filtre |
| 5. İndeks | Çekirdek sorguya kapsayan indeks |
| 6. Yeni rapor | İlişkili alt sorgu ve DISTINCT yok |
| 7. Mutabakat | Eski ve yeni arasında fark 0 |
| 8-9. Karar | İndeks bedeli ve yönetici notu |
Teslim
Tek sayfa: eski ve yeni plan, mutabakat sonucu, eklenen indeks ve bedeli, öneri. Hız kazancını kendi ortamında ölçmeden yazma.
Kendini değerlendir
| Ölçüt | Başlangıç | İyi | Mükemmel |
|---|---|---|---|
| Ölçüm | Süre yazılmış | Plan ve sağlama da var | Birkaç ölçüm, önbellek etkisi not edilmiş |
| Doğruluk | Satır sayısı aynı | Toplamlar aynı | İki yönlü EXCEPT sıfır |
| Karar | İndeks eklenmiş | Bedel yazılmış | Sıklık, yazma yükü ve alternatif birlikte tartılmış |