Sobes.tech
Junior — Middle

Cosa può portare PostgreSQL a non utilizzare un indice durante la ricerca su un campo specifico?

sobes.tech AI

Risposta dell'AI

PostgreSQL potrebbe non utilizzare un indice durante la ricerca su un campo specifico per diversi motivi:

  • Bassa selettività della query: se la condizione di ricerca restituisce una grande percentuale di righe, il pianificatore può scegliere una scansione sequenziale, poiché è più efficiente.
  • Tipi di dati o operazioni incompatibili con l'indice: ad esempio, l'uso di funzioni o operazioni che non supportano l'indice (come LIKE '%pattern') o incompatibilità di tipi di dati.
  • Mancanza di statistiche o statistiche obsolete: se le statistiche della tabella non sono aggiornate (ANALYZE), il pianificatore può prendere decisioni sbagliate.
  • Uso di espressioni non coperte dall'indice: ad esempio, cercare su un campo calcolato senza un indice funzionale corrispondente.
  • Parametri di configurazione: ad esempio, un valore troppo alto di random_page_cost può influenzare la scelta del piano.

Esempio: se hai un indice sul campo name, ma la query usa WHERE LOWER(name) = 'abc', e l'indice non è funzionale su LOWER(name), l'indice non verrà utilizzato.