Gracias!
Lo que pasa es que hice unas pruebitas y en el caso de índices comunes, si
despues en la búsqueda le ponés un coalese, si lo utiliza, pero bueno
entiendo cual es el comportamiento en el caso de FTS e índices GIN
particularmente.

Gracias de nuevo

El 3 de mayo de 2016, 11:35, Hellmuth Vargas <hiv...@gmail.com> escribió:

> Hola Guillermo
>
> En efecto ese es el comportamiento esperado, el indice solo se puede
> aplicar sobre la expresión de columna exacta que se definió. Al colocar una
> función adicional (en el caso coalesce) esta modificando el valor de la
> columna y sobre este nuevo valor no se genero el indice, sucede lo mismo
>  si definimos un indice sobre un valor texto, por  ejemplo:
>
> CREATE INDEX idx_tabla_nombre
>   ON tabla(nombre);
>
> y luego pretendemos que lo use en una sentencias así:
>
> SELECT * FROM tabla WHERE UPPER(nombre) ='CARLOS'
>
> Si es frecuente la consulta con UPPER debería definir el indice con la
> función UPPER (PostgreSQL soporta esto):
>
> CREATE INDEX idx_tabla_upper_nombre
>   ON tabla(*UPPER(*nombre*)*);
>
>
>
> El 3 de mayo de 2016, 07: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
>>
>
>
>
> --
> Cordialmente,
>
> Ing. Hellmuth I. Vargas S.
> Esp. Telemática y Negocios por Internet
> Oracle Database 10g Administrator Certified Associate
> EnterpriseDB Certified PostgreSQL 9.3 Associate
>
>

Responder a