CodeBlanks Logo Icon CodeBlanks

Sorgu yeniden yazma

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

query.sql
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

query.sql
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

Soru
created_at >= '2026-01-01' AND created_at ____
Cevap
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.

Uzman bölümündeki tüm dersler