Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/01/2011, 05:47
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: consulta de un select

Código MySQL:
Ver original
  1.     articulos JOIN
  2.     rubros JOIN
  3.     subrubros JOIN
  4.     proveedores JOIN
  5.     impuestos JOIN monedas
  6.     articulos.rubro = rubros.rub_id AND
  7.     articulos.subrubro = subrubros.subrub_id  AND
  8.     articulos.proveedor=proveedores.proveedor_id AND
  9.     articulos.iva=impuestos.iva_id  AND
  10.     articulos.moneda=mone_id  
  11. ORDER BY arti_id asc ;
Sintácticamente parece estar bien, pero no es optima.
Para optimizarla deberías mostrarnos como es la estructura de cada tabla vinculada en el JOIN, de modo de poder ver mejor sus relaciones y sus columnas. SIn eso es difícil encontrarle alternativas.
Lo que te puedo ir anticipando es que todo lo que has puesto en el WHERE está mal ubicado. Cada uno de esos es una condición del ON de cada JOIN y va en el FROM. Eso sí es eficiente, pero sigue sin estar optimizado.

Código MySQL:
Ver original
  1.     articulos  A JOIN  rubros R ON A.rubro = R.rub_id
  2.     JOIN  subrubros S ON A.subrubro = S.subrub_id
  3.     JOIN  proveedores P ON A.proveedor = P.proveedor_id
  4.     JOIN impuestos I ON A.iva = I.iva_id
  5.     JOIN monedas M ON A.moneda = M.mone_id  
  6. ORDER BY arti_id asc ;
Otra cosa que se puede decir: La tabla devuelta tendrá como columnas la sumatoria de las columnas de todas las tablas del FROM. ¿Realmente necesitas TODAS? ¿No sería mejor indicar qué columnas se necesitan?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)