Junior — Middle
PostgreSQL'in belirli bir alan üzerinde arama yaparken neden indeks kullanmayabileceği ne olabilir?
sobes.tech yapay zeka
AI'dan gelen yanıt
PostgreSQL, belirli bir alan üzerinde arama yaparken birkaç nedenle indeks kullanmayabilir:
- Düşük seçicilik: Arama koşulu, büyük bir satır yüzdesini döndürüyorsa, planlayıcı daha verimli olduğu için sıralı taramayı seçebilir.
- İndeksle uyumsuz veri türleri veya işlemler: Örneğin, indeks desteklemeyen fonksiyonlar veya işlemler kullanmak (örneğin,
LIKE '%pattern') veya veri türleri uyumsuzluğu. - İstatistik eksikliği veya güncel olmayan istatistikler: Tablo istatistikleri güncellenmediyse (
ANALYZE), planlayıcı yanlış kararlar verebilir. - İndeksle kapsanmayan ifadelerin kullanımı: Örneğin, hesaplanmış bir alan üzerinde arama yapmak ve uygun fonksiyonel indeksin olmaması.
- Yapılandırma parametreleri: Örneğin, çok yüksek
random_page_costdeğeri plan seçiminde etkili olabilir.
Örnek: name alanında bir indeksiniz varsa, ancak sorgu WHERE LOWER(name) = 'abc' kullanıyorsa ve indeks LOWER(name) üzerinde fonksiyonel değilse, indeks kullanılmaz.