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_costpoate 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.