03/07/2011, 14:53
|
| 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: Drama con SUM( multiplicación) a la vez Hay cosas realmente ineficientes en esa consulta:
- ¿Para qué consultar por el nombre del vendedor, si ya consultas por su código? Es más que redundante: Es innecesario. Y si la idea es poner el nombre en la consulta, bueno, no lo estás haciendo...
- JOIN no es exactamente igual a INNER JOIN. En tu caso es más eficiente usar INNER JOIN porque JOIN intenta primero hacer una junta entre campos con el mismo nombre, aunque tengan dominios distintos. Puede estar generando productos cartesianos.
- Preguntar por un campo DATETIME y contra valores DATETIME, cuando en realidad necesitas sólo la parte DATE, puede generar baja de performance. Exige al sistema leer más bytes innecesariamente.
- El orden de las tablas genera diferencias de resultado. Si te interesa la información de los vendedores, es mejor que la primera tabla sea la de lso vendedores. Si te interesa la de un solo vendedor, ni siquiera necesitas leer la tabla vendedores, si ya tienes su ID...
Hay si un detalle que no se termina de comprender. ¿Qué contiene exactamente la tabla "aclase6_codigo"?
Porque "ART_DB" parece ser la de artículos, "NOTV_DB" la de facturas o notas de venta, "NOTDE_DB" algo así como notas de débito, pero "aclase6_codigo" no se entiende.
Además, ¿Por qué aparece un campo "CODVEND" que parece ser el ID del vendedor, y luego usas el nombre para la búsqueda?
En esa parte, me parece que el problema mayor puede deberse a un diseño erróneo de tablas.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |