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