PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Estratégia de indexação para diferentes combinações de cláusulas WHERE incl. padrões de texto


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:

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:
  1. mais curto
  2. menos confuso
  3. torna o trabalho do planejador do Postgres mais simples (muito mais barato)

  4. correto

    Se você passar uma string com caracteres especiais inadvertidamente, poderá obter resultados incorretos. Ver: