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:
- Variazioni delle prestazioni delle query LIKE di PostgreSQL
- Corrispondenza del modello con LIKE, SIMILAR TO o espressioni regolari in PostgreSQL
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:
- più corto
- meno confusione
- rende il lavoro per il pianificatore Postgres più semplice (molto leggermente più economico)
-
corretto
Se passi inavvertitamente una stringa con caratteri speciali, potresti ottenere risultati errati. Vedi: