Re: FTS

From: Hellmuth Vargas <hivs77(at)gmail(dot)com>
To: "Guillermo E(dot) Villanueva" <guillermovil(at)gmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: FTS
Date: 2016-05-03 14:35:00
Message-ID: CAN3Qy4oERZepjngBfQQOBeKhv+6P52DfRgk-9p+S2qg=O12jkQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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<guillermovil(at)gmail(dot)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

In response to

  • FTS at 2016-05-03 12:56:50 from Guillermo E. Villanueva

Responses

  • Re: FTS at 2016-05-03 16:22:31 from Guillermo E. Villanueva

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guillermo E. Villanueva 2016-05-03 16:22:31 Re: FTS
Previous Message Eduardo Arenas C. 2016-05-03 13:05:01 Re: FTS