Ver Mensaje Individual
  #4 (permalink)  
Antiguo 12/01/2012, 13:28
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Optimizar consulta

Hola de nuevo turfeano:

Cita:
creo q es mas prolija pero no parece ser mas eficiente.
Por qué no ejecutas un EXPLAIN con ambas consultas y vez el comportamiento?

Te podría asegurar que los tiempos mejorarán considerablemente, veamos algunos problemas con la consulta que tu planteas:

Primero, en la subconsulta para obtener la versión máxima, no es necesario hacer un INNER JOIN, pues si observas en el SELECT sólo se manejan campos de la tabla Versiones (T2), con poner una condición en el WHERE sería suficiente.

Segundo, de la manera en que estás planteando la consulta, la subconsulta para obtener se ejecuta n veces, siendo n el número de registros que hay en tu tabla documentos, al poner la condición en el WHERE se tiene que evaluar con cada registro. En la que propongo yo, la subconsulta SOLO SE EJECUTA UNA VEZ, el resto simplemente es ligar los resultados obtenidos.

Tercero, poner un SELECT * no es recomendable, PUES ESTARÍAS REPITIENDO LOS CAMPOS COMUNES, por el contrario, debes listar solamente aquellos campos que realmente vas a utilizar.

Finalmente, si los tiempos de respuesta son semejantes entre las consultas, puedes seguir utilizando tu propuesta, mientras alguien más propone alguna otra mejora.

Saludos
Leo.