PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Strategia di indicizzazione per diverse combinazioni di clausole WHERE incl. modelli di testo

Il tuo predicato aggiunto usa il LIKE operatore:

AND network LIKE '%'

Il piano di query effettivo dipende da ciò che si passa invece di '%'. Ma, in genere, gli indici btree semplici sono inutili per questo. Avrai bisogno di un indice di trigramma o di utilizzare l'infrastruttura di ricerca di testo o simili, a seconda dei modelli che potresti cercare.

Vedi:

Potresti anche combinare più strategie di indicizzazione. Esempio:

Se dovrebbe essere:

AND network = '<input_string>'

quindi, in ogni caso, usa effettivamente il = operatore, non LIKE . Motivi in ​​ordine crescente di importanza:

  1. più corto
  2. meno confusione
  3. rende il lavoro per il pianificatore Postgres più semplice (molto leggermente più economico)
  4. corretto

    Se passi inavvertitamente una stringa con caratteri speciali, potresti ottenere risultati errati. Vedi: