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şulu | Index kullanılır mı? |
|---|---|
musteri_id = 5 | Evet |
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?
- 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. - En sık birlikte sorgulanan sütunlar.
ORDER BYda 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);İlgili Veritabanı & SQL soruları
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.