Sobes.tech
Junior — Middle

Ce poate determina PostgreSQL să nu utilizeze indexul atunci când efectuează o căutare pe un anumit câmp?

sobes.tech AI

Răspuns de la AI

PostgreSQL poate să nu utilizeze indexul la căutarea pe un anumit câmp din mai multe motive:

  • Selecția scăzută a interogării: dacă condiția de căutare returnează un procent mare de rânduri, planificatorul poate alege o scanare secvențială, deoarece este mai eficientă.
  • Tipuri de date sau operații incompatibile cu indexul: de exemplu, utilizarea funcțiilor sau operațiilor care nu suportă indexul (cum ar fi LIKE '%pattern') sau incompatibilitatea tipurilor de date.
  • Lipsa statisticilor sau statisticile învechite: dacă statisticile tabelului nu sunt actualizate (ANALYZE), planificatorul poate lua o decizie greșită.
  • Utilizarea expresiilor care nu sunt acoperite de index: de exemplu, căutarea pe un câmp calculat fără un index funcțional corespunzător.
  • Parametri de configurare: de exemplu, o valoare prea mare a random_page_cost poate influența alegerea planului.

Exemplu: dacă aveți un index pe câmpul name, dar interogarea folosește WHERE LOWER(name) = 'abc', iar indexul nu este funcțional pe LOWER(name), indexul nu va fi utilizat.