Seu predicado adicionado usa o
LIKE
operador:AND network LIKE '%'
O plano de consulta real depende do que você passa em vez de '%'. Mas, geralmente, índices btree simples são inúteis para isso. Você precisará de um índice de trigramas ou usar a infraestrutura de pesquisa de texto ou similar, dependendo dos padrões que estiver procurando.
Ver:
- Variações de desempenho de consulta PostgreSQL LIKE
- Correspondência de padrões com LIKE, SIMILAR TO ou expressões regulares no PostgreSQL
Você pode até combinar várias estratégias de indexação. Exemplo:
Se for para ser:
AND network = '<input_string>'
então, com certeza, use o
=
operador, não LIKE
. Razões em ordem crescente de importância:- mais curto
- menos confuso
- torna o trabalho do planejador do Postgres mais simples (muito mais barato)
-
correto
Se você passar uma string com caracteres especiais inadvertidamente, poderá obter resultados incorretos. Ver: