Ihr hinzugefügtes Prädikat verwendet den LIKE
Betreiber:
AND network LIKE '%'
Der tatsächliche Abfrageplan hängt davon ab, was Sie anstelle von '%' übergeben. Aber im Allgemeinen sind einfache btree-Indizes dafür nutzlos. Sie benötigen einen Trigrammindex oder verwenden die Textsuchinfrastruktur oder ähnliches, je nachdem, nach welchen Mustern Sie suchen.
Siehe:
- Änderungen der PostgreSQL LIKE-Abfrageleistung
- Musterabgleich mit LIKE, SIMILAR TO oder regulären Ausdrücken in PostgreSQL
Sie können sogar mehrere Indizierungsstrategien kombinieren. Beispiel:
Wenn das sein soll:
AND network = '<input_string>'
Verwenden Sie dann unbedingt =
Operator, nicht LIKE
. Gründe in aufsteigender Reihenfolge der Wichtigkeit:
- kürzer
- weniger verwirrend
- macht die Arbeit für den Postgres-Planer einfacher (sehr geringfügig billiger)
-
richtig
Wenn Sie versehentlich eine Zeichenfolge mit Sonderzeichen übergeben, erhalten Sie möglicherweise falsche Ergebnisse. Siehe: