sql >> Base de Datos >  >> RDS >> PostgreSQL

Estrategia de indexación para diferentes combinaciones de cláusulas WHERE incl. patrones de texto

Su predicado agregado usa el LIKE operador:

AND network LIKE '%'

El plan de consulta real depende de lo que pase en lugar de '%'. Pero, en general, los índices btree simples son inútiles para esto. Necesitará un índice de trigramas o usar la infraestructura de búsqueda de texto o similar, según los patrones que esté buscando.

Ver:

Incluso puede combinar varias estrategias de indexación. Ejemplo:

Si se supone que debe ser:

AND network = '<input_string>'

entonces, por todos los medios, usa realmente el = operador, no LIKE . Razones en orden ascendente de importancia:

  1. más corto
  2. menos confuso
  3. hace que el trabajo del planificador de Postgres sea más simple (un poco más barato)
  4. correcto

    Si pasa una cadena con caracteres especiales sin darse cuenta, es posible que obtenga resultados incorrectos. Ver: