Dodany predykat używa LIKE
operator:
AND network LIKE '%'
Rzeczywisty plan zapytania zależy od tego, co przekazujesz zamiast „%”. Ale ogólnie rzecz biorąc, zwykłe indeksy btree są do tego bezużyteczne. Będziesz potrzebować indeksu trygramów lub skorzystać z infrastruktury wyszukiwania tekstu lub podobnego, w zależności od tego, jakich wzorców możesz szukać.
Zobacz:
- Odmiany wydajności zapytań PostgreSQL LIKE
- Dopasowywanie wzorców za pomocą LIKE, SIMILAR TO lub wyrażeń regularnych w PostgreSQL
Możesz nawet połączyć wiele strategii indeksowania. Przykład:
Jeśli tak ma być:
AND network = '<input_string>'
wtedy, na wszelki wypadek, faktycznie użyj =
operator, a nie LIKE
. Powody w porządku rosnącym według ważności:
- krótsze
- mniej zagmatwane
- ułatwia pracę planistom Postgres (bardzo nieznacznie taniej)
-
poprawnie
Jeśli przypadkowo przekażesz ciąg ze znakami specjalnymi, możesz otrzymać nieprawidłowe wyniki. Zobacz: