MySQL - OPTIMIZAR CONSULTA

 
Vista:
sin imagen de perfil

OPTIMIZAR CONSULTA

Publicado por ANTONIO (33 intervenciones) el 18/12/2009 13:20:04
Hola amigos soy novato en mysql ya que vengo de access y ya me tenía frito de los problemas que daba cuando multiples usuarios accedian simultaneamente a la base de datos.
Bueno eso es otra historia me he decantado por mysql y no tengo ni idea.
He usado una consulta y la he puesto en el mysql query browser para ver si funcionaba o no y si que funciona pero tarda unos 10 segundos en devolverme el resultado.
La consulta es:
select dorsal_asigando as Dorsal_asignado, Apellidos, Nombre, Confirmado from inscritosprin where carrera='09ESPADA' and Dorsal_Asigando='Sin Asignar' and confirmado='OK' AND PROCEDENCIA='TPV' AND NOT ISNULL(AUTORIZACION) and dni NOT in(SELECT dni_cor FROM INSCRITOS where procedencia='TPV' AND CARRERA='09ESPADA') ORDER BY APELLIDOS

En resumidas cuentas busca la gente de una tabla que no esta en otra tabla según unas condiciones.
La tabla inscritosprin tendra unos 3000 registros y la tabla inscritos unos 2000

Saludos y gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:OPTIMIZAR CONSULTA

Publicado por Gonzalo GC (339 intervenciones) el 18/12/2009 22:14:15
Pruébalo así:

SELECT
dorsal_asigando,
Apellidos,
Nombre,
Confirmado
FROM inscritosprin I LEFT JOIN inscritos I2 ON I.dni = I2.dni_cor
WHERE
I2.dni_cor IS NULL
carrera='09ESPADA'
AND I.dorsal_asigando='Sin Asignar'
AND confirmado='OK'
AND PROCEDENCIA='TPV'
AND AUTORIZACION IS NOT NULL
ORDER BY APELLIDOS;

El problema inicialmente es que haces que lea todos los registros antes de depurar cuáles son los que no están en INSCRITOS.dni_cor, y eso despderdicia tiempo.
Por otra parte, un ORDER BY siempre genera consultas más lentas, ya que se pierde tiempo ordenando. Si no vas a usar esta consulta en un listado, no la ordenes, ya que el ordenamiento tiene sentido si se usa de esa forma.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar