El 16/11/2011 01:22 p.m., Cesar Erices escribió:
El 15 de noviembre de 2011 14:11, Anita Ramirez <[email protected]
<mailto:[email protected]>> escribió:
Buenas tardes,
Resulta que tengo una función que realiza varias validaciones,
inserciones etc. Una de ellas es realizar búsqueda por like a una
tabla. Básicamente tengo dos tablas "alumno" y "persona", a cada
alumno se debe buscar en la tabla persona, y para ello solo
contamos con nombres y apellidos (nombre completo, es decir en un
solo campo y campos separados, es decir nombre1, nombre2,
apellido1, apellido2), por lo que inicialmente procedemos a buscar
por "=", considerando mayusculas, minusculas, caracteres
especiales, si eso no emite resultado procedemos a buscar por like
en los campos separados, y si nuevamente no emite resultados, se
realiza nuevamente la búsqueda por like en el campo que contiene
el nombre y apellido completo.
La tabla persona en la que se realiza la búsqueda tiene
aproximadamente 580000 registros. Probé con indices btree, y
también leí acerca de varchar_pattern_ops, pero con éste ultimo no
es posible utilizar "es igual", por lo que no me resulta.
Tal cual como se encuentra ahora por 50 registros tarda 6 minutos
aproximadamente, lo cual es mas que excesivo.
Alguna idea?
Desde ya, gracias.
Ana Ramirez.-
Revisa los indices y pk, habitualmente esto se produce por un ml
diseño de BBDD
atte.
--
Sin más que decir se despide de Usted, muy atentamente
Cesar Erices Vergara
Ingeniero en Gestión Informática
Analista de Sistema
Santiago - Chile
Se certificó que el correo no contiene virus.
Comprobada por AVG - www.avg.es <http://www.avg.es>
Versión: 2012.0.1869 / Base de datos de virus: 2092/4620 - Fecha de la
versión: 16/11/2011
Hola, que caracteristicas tiene el equipo de la bd.
Como es la cnsulta de like que estas usando?
es algo asi : select * from persona where coalesce(apellido1,'')||'
'||colaesce(apellido2,'')||' '||coalesce(nombre1,'')||'
'||colaesce(nombre2,'') ilike '%rodriguez fernando%'
saludos fernando rodriguez