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

Índice de texto completo adecuado Rails/PostgreSQL/pg_search

Esta expresión:

to_tsvector('simple', (COALESCE(title::TEXT), ''))

no es sargable contra su índice.

Debe declarar el índice en la expresión exacta que se utiliza en la consulta:

CREATE INDEX products_gin_title
ON products
USING GIN(to_tsvector('simple', COALESCE(title::TEXT,'')))

(o hacer que Ruby genere la expresión que se usa en el índice).

Si desea que se indexen varias columnas, simplemente concatenelas:

CREATE INDEX products_gin_title
ON products
USING GIN(to_tsvector('simple', title || ' ' || product_type || ' ' || platform_id))

pero, de nuevo, Ruby debería estar filtrando exactamente en la misma expresión para que el índice sea útil.