Composite (bileşik) index nedir? Leftmost prefix kuralı ne demektir?

Cevap

Composite index, birden fazla sütun üzerine kurulan tek bir index'tir. B-Tree yapısında kayıtlar önce birinci sütuna, eşitlikte ikinci sütuna göre sıralanır (telefon rehberinde soyad, sonra ad gibi).

CREATE INDEX idx_siparis ON siparisler (musteri_id, durum, tarih);

Leftmost prefix kuralı

Index yalnızca soldan başlayan sütun kombinasyonları için verimli kullanılabilir:

Sorgu koşuluIndex kullanılır mı?
musteri_id = 5Evet
musteri_id = 5 AND durum = 'aktif'Evet
musteri_id = 5 AND durum = 'aktif' AND tarih > '2025-01-01'Evet, üç sütun da
durum = 'aktif'Hayır (ilk sütun yok)
musteri_id = 5 AND tarih > '2025-01-01'Kısmen: yalnızca musteri_id ile daraltır

Koşulların SQL'de yazılış sırası önemli değildir; optimizer bunları düzenler. Önemli olan index tanımındaki sütun sırasıdır.

Sütun sırası nasıl seçilir?

  1. Eşitlik (=) koşulundaki sütunlar önce, aralık (>, BETWEEN, LIKE 'abc%') koşulundakiler sona. Aralık koşulundan sonraki sütunlar arama için kullanılamaz.
  2. En sık birlikte sorgulanan sütunlar.
  3. ORDER BY da index sırasına uyarsa ayrıca sıralama yapılmaz.

Covering index

Sorgunun ihtiyaç duyduğu tüm sütunlar index'te varsa veritabanı tabloya hiç gitmez (PostgreSQL'de "Index Only Scan"). PostgreSQL'de INCLUDE ile arama dışı sütunlar eklenebilir:

CREATE INDEX idx_kapsayan ON siparisler (musteri_id) INCLUDE (tutar);
  1. INNER JOIN ile LEFT JOIN arasındaki fark nedir?KolayVeritabanı & SQLBackend
  2. Bir tablodaki ikinci en yüksek maaşı bulun.OrtaVeritabanı & SQLBackend
  3. Index nedir? Dezavantajları nelerdir?OrtaVeritabanı & SQLBackend
  4. ACID nedir?OrtaVeritabanı & SQLBackend
  5. Normalizasyon nedir? Ne zaman denormalizasyon yaparsınız?ZorVeritabanı & SQLBackend
  6. N+1 sorgu problemi nedir ve nasıl çözülür?OrtaVeritabanı & SQLBackend

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle