Guillermo,

De lo que entiendo, o que deberías generar es una columna tipo tsvector en
tu tabla a partir de la columna donde tiene es texto. y esa columna tipo
tsvector indexarla, y ahí no sería necesario utilizar el coalesce. En
general he visto que cuando haces algún calculo o un cast sobre una columna
en el where como el tuyo la búsqueda se va a secuencial y no utiliza los
indices.

Saludos



El 3 de mayo de 2016, 09:56, Guillermo E. Villanueva<guillermo...@gmail.com>
escribió:

> Buenos días cómo están?
> Les comento una experiencia con full text search.
> En una tabla que tengo unos 120mil registros creé un índice para hacer FTS
> de la siguiente forma:
> CREATE INDEX fts_escritodtxt
>   ON tescrito
>   USING gin
>   (to_tsvector('spanish'::regconfig, escritodtxt));
>
> cuando hago un explain de la sentencia:
> SELECT
> t.escritoid,
> t.escritofecfirma,
> t.escritotipojuz
> FROM
> tescrito t
> WHERE
> to_tsvector('spanish',coalesce(escritodtxt,''))   @@
> to_tsquery('spanish','hogar & vereda');
>
> Me dice que *no utilizará el índice* creado y con una búsqueda secuencial
> demora aproximadamente 4 minutos.
> Pero si elimino el coalesce, entonces si usa el índice y el resultado se
> obtiene en menos de un segundo!!!
> *¿Es este el comportamiento esperado?* No pasa lo mismo con los índices
> no fts.
> Desde ya muchas gracias por sus comentarios
>
> Saludos
>
> Guillermo
>



-- 
​​
-- 
Eduardo Arenas
Jefe de Unidad de Gestión de Información
Ancora UC
​ - Chile​

+56 9 6629 1618
+56 22 944 9098

Responder a