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 |
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 |