Tiempo de consulta con full text search

From: Ever Daniel Barreto Rojas <ebarreto(at)nexusit(dot)com(dot)py>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Tiempo de consulta con full text search
Date: 2008-01-02 16:59:46
Message-ID: 83204316.20080102125946@nexusit.com.py
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola a todos:

Hace algún tiempo atrás tuve una consulta de cómo mejorar el
tiempo de una consulta en la que utilizaba LIKE para realizar
búsquedas sobre campos varchar, y en aquella oportunidad, me
comentaron que debía usar full text search para mejorar aún más
el tiempo de las consultas

pues bien, finalmente lo hice, esta semana me tomé el tiempo de
montar un servidor en donde hacer las pruebas, asi es que
básicamente, lo que necesito es mejorar (si se puede), el tiempo
de una consulta, la consulta es la siguiente:

-- la tabla persona tiene 4 millones de registros --

infosur=# \timing
Mostrar tiempos está activado.
infosur=# SELECT per_nrodoc, per_apellidos, per_nombres
infosur-# FROM persona
infosur-# WHERE idx_fti_nombrecompleto @@ to_tsquery('default', 'EVER&BARRETO')
infosur-# ORDER BY per_apellidos, per_nombres;
Duración: 8420,236 ms

como ven, la consulta me toma 8420ms, sin embargo si vuelvo a
ejecutarla, obtengo un mejor tiempo:

infosur=# SELECT per_nrodoc, per_apellidos, per_nombres
FROM persona
WHERE idx_fti_nombrecompleto @@ to_tsquery('default', 'EVER&BARRETO')
ORDER BY per_apellidos, per_nombres;
Duración: 157,586 ms

pero si cambio las palabras de búsqueda, vuelvo a obtener una
tiempo mayor:

infosur=# SELECT per_nrodoc, per_apellidos, per_nombres
FROM persona
WHERE idx_fti_nombrecompleto @@ to_tsquery('default', 'HUGO&BARRETO')
ORDER BY per_apellidos, per_nombres;
Duración: 12947,179 ms

habría alguna forma de mejorar esto? el escenario es el siguiente:

Debian 4.0r1 para AMD64
PostgreSQL 8.2.5 on x86_64-pc-linux-gnu, compiled by GCC cc (GCC)
4.1.2 20061115 (prerelease) (Debian 4.1.1-21)

la estructura de la tabla persona y los pasos que hice para crear el
campo y el indice tsearch están disponibles en el archivo de
texto que va adjunto a este mail

muchas gracias a todos por su ayuda, y que espero que tengan un
excelente 2008!

Cordiales saludos,

-------------------
Ever Daniel Barreto Rojas
e.mail: ebarreto(at)nexusit(dot)com(dot)py :: Nexus Information Technologies
web: www.nexusit.com.py
02/01/2008 12:40 p.m.

---------------------
"Hay cuatro cosas que no pueden ser escondidas durante mucho tiempo:
la ciencia, la estupidez, la riqueza y la pobreza"
- Averroes
---------------------

Attachment Content-Type Size
persona.sql text/plain 2.4 KB

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message marcosrios 2008-01-02 18:11:58 Re: Consulta con saldo de la fila anterior
Previous Message marcelo Cortez 2008-01-02 16:41:26 Re: Tiempo de consulta con full text search