[Pgsql-ayuda] select like con tablas grandes

Martin Marques martin@bugs.unl.edu.ar
Tue, 13 May 2003 09:02:58 -0300


On Mar 13 May 2003 08:49, Manuel Infante Ruiz wrote:
>   Hola lista....
>
>   Tengo un pequeño problema... que no sé cómo resolver....
>
>   Tengo una tabla con aprox. 700.000 registros. A esta tabla le hago de
> vez en cuando consultas del tipo
>
> Select * from libros where titulo like '%cervantes%';
>
> el problema está no sólo en lo que tarda en devolver el resultado. El
> verdadero problema está en que algunas veces ni siquiera lo devuelve y
> la consulta se queda colgada... o éso parece.
>
> ¿Alguien sbe a qué puede ser debido ésto?

Para saber que va a hacer el motor con una consulta, hace esto:

EXPLAIN Select * from libros where titulo like '%cervantes%'

Ahio te va a decir como va a buscar los registros esos.

> ¿Existe alguna manera eficiente de indexar campos varchar y que coja el
> índice buscando por subcadenas?

CREATE INDEX nombre_indice ON libros(titulo)

Si no tenias este indice, crealo y corre de nuevo el EXPLAIN para ver como 
cambia.

> He consultado el documento "Full Text Index" pero no sé qué tipo de
> consulta SQL hay que mandar para que utilice el índice buscando por
> subcadenas.

Por lo que tengo entendido, esto sirve para cuando estas haciendo una 
busqueda en un campo TEXT, los cuales no se indexan, o al menos no tiene 
sentido indexar.


-- 
Porqué usar una base de datos relacional cualquiera,
si podés usar PostgreSQL?
-----------------------------------------------------------------
Martín Marqués                  |        mmarques@unl.edu.ar
Programador, Administrador, DBA |       Centro de Telematica
                       Universidad Nacional
                            del Litoral
-----------------------------------------------------------------