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