Sobes.tech
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_cost değ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.