Ditt tillagda predikat använder LIKE
operatör:
AND network LIKE '%'
Den faktiska frågeplanen beror på vad du passerar istället för '%'. Men i allmänhet är vanliga btree-index värdelösa för detta. Du behöver ett trigramindex eller använda textsökningsinfrastrukturen eller liknande, beroende på vilka mönster du kanske letar efter.
Se:
- PostgreSQL LIKE-frågevariationer
- Mönstermatchning med LIKE, SIMILAR TO eller reguljära uttryck i PostgreSQL
Du kan till och med kombinera flera indexeringsstrategier. Exempel:
Om det är tänkt att vara:
AND network = '<input_string>'
använd sedan för all del faktiskt =
operator, inte LIKE
. Orsaker i stigande betydelse:
- kortare
- mindre förvirrande
- gör jobbet för Postgres-planeraren enklare (väldigt lite billigare)
-
korrekt
Om du skickar en sträng med specialtecken av misstag kan du få felaktiga resultat. Se: