Código MySQL:
Ver original
ó
Código MySQL:
Ver original
saludos
| ||||
que consulta es mejor en relaciones con INNER JOIN hola quiciera saber si existe diferencia entre estas dos consultas y cual seria la mejor para utilizar.
Código MySQL:
Ver original ó
Código MySQL:
Ver original saludos |
| ||||
Respuesta: que consulta es mejor en relaciones con INNER JOIN hola muchas gracias por tu respuesta , es que haciendo pruebas con INNER JOIN me surgieron dudas sobre su funcionamiento , siguiendo con el mismo ejemplo que diferencia hay con esta y la anteriores pues me retornan los mismos datos o no tiene relevancia?
Código MySQL:
Ver original saludos |
| ||||
Respuesta: que consulta es mejor en relaciones con INNER JOIN Tiene relevancia. Fíjate que el campo iduser pertenece a la tabla PROPIEDADXUSUARIO, por lo que si no la cruzas con PROPIEDAD, que es donde está el polígono, jamás podrías obtener el polígono que pertenezca al usuario buscado. Ese es el sentido del modelo relacional y de la normalización de las 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) |
| ||||
Respuesta: que consulta es mejor en relaciones con INNER JOIN pero en el tema de rendimiento es la misma consulta , me imagino que lo ideal seria colocar la tabla propiedad despues del from en vez de propiedadxusuario . saludos |
| ||||
Respuesta: que consulta es mejor en relaciones con INNER JOIN En un INNER JOIN con sólo dos tablas lo que importa en realidad es la relación establecida. En todo caso lo importante es que en el ON el origen de los campos cruzados respete el orden en que aparecen las tablas, es decir que el primer campo de la igualdad pertenezca a la primera tabla. En cuanto a performance, lo mejor es que la relación esté determinada por FK, porque de esa forma lo que MySQL lee en realidad es el índice que se creó al definir la FK, y con ello la cantidad de registros leídos es la menor. En estos casos el uso de tablas InnoDB tiene más impacto que el orden de las 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) |
| ||||
Respuesta: que consulta es mejor en relaciones con INNER JOIN osea que esta consulta estaria bien segun lo que dices de el orden de las tablas.?
Código MySQL:
Ver original a que te refieres con esto"En estos casos el uso de tablas InnoDB tiene más impacto que el orden de las tablas."? saludos Última edición por RIVERMILLOS; 10/02/2011 a las 08:14 |
| ||||
Respuesta: que consulta es mejor en relaciones con INNER JOIN Exacto, esa sería la idea de orden de campos. Cita: Es un tema de la lógica interna del MySQL y de las bases relacionales en general.a que te refieres con esto"En estos casos el uso de tablas InnoDB tiene más impacto que el orden de las tablas."? 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) |
Etiquetas: |