Ver Mensaje Individual
  #8 (permalink)  
Antiguo 10/02/2011, 11:15
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: que consulta es mejor en relaciones con INNER JOIN

Exacto, esa sería la idea de orden de campos.
Cita:
a que te refieres con esto"En estos casos el uso de tablas InnoDB tiene más impacto que el orden de las tablas."?
Es un tema de la lógica interna del MySQL y de las bases relacionales en general.
Las tablas relacionales (que en MySQL sólo son las InnoDB) crean un índice que le permite al DBMS administrar las claves y los registros relacionados entre tablas. En ese contexto, la existencia de un índice permite al parser que se pueda establecer sin abrir las tablas si existe algún registro cuyos valores buscados coincidan con un criterio inicial: El del JOIN.
Si la clave buscada es parte de la clave relacional y no existe ninguna entrada en el índice que la contenga, simplemente las tablas se descartan y la respuesta es una tabla vacía.
Si el valor es parte de la clave, entonces sólo se buscan los registros que aparecen indicados en el índice, si es que son menos que toda la primera tabla... Si son más, o no aparece el valor en la clave, leen sólo los que están relacionados y luego se filtra el resto de las condiciones.
Cuando las tablas no son relacionales, no existe indice que vincule ambas tablas, por lo que debe leer toda la primera tabla comparándola con la segunda, lo que es algo más ineficiente que en el caso anterior. En estos casos es conveniente que la primera tabla sea siempre la que contenga la menos cantidad de registros para hacer un matching más eficiente. En el caso de las tablas no relacionales es imposible para el parser devolver una tabla vacía cuando no hay coincidencias sin antes leer ambas tablas... conlo que lo que hace es desperdiciar tiempo de procesamiento.

Como podrás notar, son problemas de lógica interna que no son visibles para el usuario. Sólo se estudian en profundidad en las carreras de informática...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)