20/08/2009, 19:28
|
| Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años Puntos: 2658 | |
Respuesta: Hacer un select de un select La lógica es simple: Tienes un dos conjuntos de relaciones A y B; entre ellos quieres realizar la selección de un subconjunto que cumple los criterios m, n y o, pero al hacerlo te das cuenta que en realidad usar los tres criterios al unir ambas tablas genera un calculo muy grande inutilmente, porque de la relación A hay al menos un 70 que no cumple el criterio "m", entonces ¿qué sentido tiene usar la tabla entera en la operación? Sería mejor eliminar ese 70% antes de la selección principal.
En ese ejemplo lo que haces es realizar un prefiltrado sobre uno de los dos miembros de la selección para reducir el número de combinaciones a analizar y de esa forma aumentar la performance de la operación.
¿Se comprende?
Este sería uno de los casos. Pero ten en cuenta que no existen reglas para la utilización de subconsultas. No hay forma de responder tu pregunta. Hay miles de razones distintas por las que se puede considerar realizar una subconsulta. En esencia es una decisión que los developers toman según lo que deseen obtener.
Se pueden usar subconsultas para obtener sumatorias, agrupamientos, cálculos espaciales, etc. Pueden usarse subconsultas que sean subconsultas de subconsultas...
En mi caso, por ejemplo, tengo algunas consultas que tienen tres niveles de subconsultas, cada una de las cuales a su vez genera una tabla derivada que se integra en una consulta mayor, dando como resultado... un reporte de prestación de servicios de un taller mecánico, a través de un año entero, agrupado y discriminado por vehículo, mes, operario y responsable de tareas...
Como verás, el uso puede ser muy variado.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque)
Última edición por gnzsoloyo; 20/08/2009 a las 19:37 |