Váš přidaný predikát používá LIKE
operátor:
AND network LIKE '%'
Skutečný plán dotazů závisí na tom, co předáte místo '%'. Ale obecně jsou obyčejné indexy btree k tomu k ničemu. Budete potřebovat trigramový index nebo použít infrastrukturu textového vyhledávání nebo podobně, v závislosti na tom, jaké vzory byste mohli hledat.
Viz:
- Varianty výkonu dotazů LIKE PostgreSQL
- Shoda vzorů s LIKE, SIMILAR TO nebo regulárními výrazy v PostgreSQL
Můžete dokonce kombinovat více strategií indexování. Příklad:
Pokud to má být:
AND network = '<input_string>'
pak rozhodně použijte =
operátor, nikoli LIKE
. Důvody ve vzestupném pořadí důležitosti:
- kratší
- méně matoucí
- zjednodušuje práci plánovači Postgres (o něco málo levnější)
-
správně
Pokud nedopatřením předáte řetězec se speciálními znaky, můžete získat nesprávné výsledky. Viz: