Dit tilføjede prædikat bruger LIKE
operatør:
AND network LIKE '%'
Den faktiske forespørgselsplan afhænger af, hvad du sender i stedet for '%'. Men generelt er almindelige btree-indekser ubrugelige til dette. Du skal bruge et trigramindeks eller bruge tekstsøgningsinfrastrukturen eller lignende, afhængigt af hvilke mønstre du måske leder efter.
Se:
- PostgreSQL LIKE-forespørgselsydeevnevariationer
- Mønstermatching med LIKE, LIGNENDE TIL eller regulære udtryk i PostgreSQL
Du kan endda kombinere flere indekseringsstrategier. Eksempel:
Hvis det skulle være:
AND network = '<input_string>'
så skal du med alle midler faktisk bruge =
operator, ikke LIKE
. Årsager i stigende rækkefølge af betydning:
- kortere
- mindre forvirrende
- gør jobbet for Postgres-planlæggeren enklere (meget lidt billigere)
-
korrekt
Hvis du ved et uheld sender en streng med specialtegn, kan du få forkerte resultater. Se: