Uw toegevoegde predikaat gebruikt de LIKE
operator:
AND network LIKE '%'
Het eigenlijke queryplan hangt af van wat u doorgeeft in plaats van '%'. Maar over het algemeen zijn gewone btree-indexen hiervoor nutteloos. Je hebt een trigram-index nodig of gebruik de tekstzoekinfrastructuur of iets dergelijks, afhankelijk van de patronen die je zoekt.
Zie:
- PostgreSQL LIKE variaties in queryprestaties
- Patroon komt overeen met LIKE, VERGELIJKBAAR MET of reguliere expressies in PostgreSQL
U kunt zelfs meerdere indexeringsstrategieën combineren. Voorbeeld:
Als dat zou moeten zijn:
AND network = '<input_string>'
gebruik dan in ieder geval de =
operator, niet LIKE
. Redenen in oplopende volgorde van belangrijkheid:
- korter
- minder verwarrend
- maakt het werk voor de Postgres-planner eenvoudiger (heel iets goedkoper)
-
juist
Als u per ongeluk een tekenreeks met speciale tekens doorgeeft, krijgt u mogelijk onjuiste resultaten. Zie: