Ver Mensaje Individual
  #6  
Antiguo 07-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 24
guillotmarc Va por buen camino
Hola.

Los problemas de velocidad en una consulta, practicamente siempre se solucionan creando un/varios índice/s adecuado/s.

Cuando tienes una subconsulta (como este caso), tienes que prestar especial atención a crear un índice para optimizar esa subconsulta (puesto que se va a lanzar la subconsulta, una vez para cada registro de la consulta principal).

Así para una consulta tipo, la comentada :

select nombre
from Tabla EXT
where (select count(*) from Tabla INT where INT.nombre = EXT.nombre) = 1

Solo creando un índice para el campo nombre, vas a aumentar espectacularmente su tiempo de ejecución.

NOTA : Este caso es muy simple, en muchos casos vas a necesitar un índice múltiple para optimizar adecuadamente una consulta. Es decir para optimizar una consulta del tipo select .... where Campo1 = X and Campo2 = Y, debes crear un índice compuesto, con los campos Campo1 y Campo2.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita