Ver Mensaje Individual
  #19 (permalink)  
Antiguo 17/09/2012, 12:45
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: 17 años, 4 meses
Puntos: 2658
Respuesta: Select para 3 tablas.

Código MySQL:
Ver original
  1. FROM dir_usuarios D, usuarios U, ap_usuarios A, avisos E
  2. U.NU_USUARIO = A.NUM_USUARIO
  3. AND D.USUARIO = U.NU_USUARIO
  4. AND U.NU_USUARIO = E.NUM_USUARIO
y
Código MySQL:
Ver original
  1.     dir_usuarios D INNER JOIN usuarios U ON D.usuario = U.nu_usuario
  2.     INNER JOIN ap_usuarios A ON U.nu_usuario = A.num_usuario
  3.     INNER JOIN avisos B ON U.nu_usuario = B.num_usuario
Para el parser de MySQL son equivalentes
Eliminar los INNER JOIN no va a mejorar la performance, e incluso puede empeorarla (por ciertas razones de los algoritmos internos).
En tanto se produzca el producto cartesiano que te describí (del que no me has hecho ningún comentario), no vas a obtener una performance mejor.
Puedes obtener algunas mejoras relativas usando indices FULLTEXT con los campos que pones en el WHERE, y usando MATCH(...) AGAINST(...), pero eso es todo. Mientras siga existiendo el riesgo de generar esos productos cartesianos... no hay mucho más que hacer.

Mi consejo es que trates de ver si puedes modificar las tablas para resolverlo.
Hay ocasiones en que no se puede resolver un mal diseño, si no es aplicando el bisturí.


Pero, bueno, es tu decisión (o la de quien sea).
__________________
¿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; 17/09/2012 a las 12:58