Sorgu yeniden yazma
- SQL kursu
- Uzman
- Ders 22/45
- 5 dk
Sorguyu sargable hale getir
Sorgu yeniden yazma
Dördüncü adımda DATE(created_at) = '2026-01-01' gibi sargable olmayan bir koşulu, indeksin kullanılabileceği created_at >= ... AND created_at < ... biçimine çevireceksin.
-- YANLIŞ: WHERE DATE(created_at) = '2026-01-01'
-- DOĞRU: WHERE created_at >= '2026-01-01'
-- AND created_at < '2026-01-02'Bu sorgu sargable indeks kullanır.
Sorgu yeniden yazma — ayrıntı
Bir sütuna fonksiyon uygulamak indeksi devre dışı bırakır. DATE(created_at) yerine aralık koşulu yazarsın. Bu sayede indeks tekrar kullanılır ve plan hızlanır.
Uygulama Sorgu yeniden yazma
Sargable sorgu yaz: created_at >= '2026-01-01' AND created_at < '2026-01-02' koşulunu kullan.
Başlangıç kodu
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INT,
amount NUMERIC,
created_at TIMESTAMP
);
-- plan oku
EXPLAIN SELECT * FROM orders WHERE customer_id = 5;
-- indeks ekle
CREATE INDEX idx_orders_customer ON orders (customer_id) INCLUDE (amount);
-- sargable yeniden yaz
SELECT * FROM orders WHEREÖrnek çözüm
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INT,
amount NUMERIC,
created_at TIMESTAMP
);
-- plan oku
EXPLAIN SELECT * FROM orders WHERE customer_id = 5;
-- indeks ekle
CREATE INDEX idx_orders_customer ON orders (customer_id) INCLUDE (amount);
-- sargable yeniden yaz
SELECT * FROM orders WHERE created_at >= '2026-01-01' AND created_at < '2026-01-02';Beklenen çıktı
Index Scan on orders using idx_orders_customer
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Sorgu yeniden yazma: kavramları eşleştir
| Kavram | Anlamı |
|---|---|
sargable |
indeksli |
function |
fonksiyon |
range |
aralık |
index |
indeks |
2 Aralık koşulu
created_at >= '2026-01-01' AND created_at ____
created_at >= '2026-01-01' AND created_at < '2026-01-02'
Açıklama: < '2026-01-02' doğru cevap.
3 Sargable olmayan koşul ne yapar?
- İndeksi hızlandırır
- Tabloyu siler
- Sütun ekler
- İndeksi devre dışı bırakır Doğru cevap
Açıklama: Sargable olmayan koşul indeksi devre dışı bırakır.