Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Cual de estas consultas es mas rapida?

Estas en el tema de Cual de estas consultas es mas rapida? en el foro de Mysql en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT PXU.punto , C.ruta , PXU.idpropiedad , C.idcasas                 FROM propiedadesxusuarios PXU ...
  #1 (permalink)  
Antiguo 07/04/2011, 11:40
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 9 años, 9 meses
Puntos: 15
Cual de estas consultas es mas rapida?

Código MySQL:
Ver original
  1. SELECT PXU.punto,C.ruta,PXU.idpropiedad,C.idcasas
  2.                FROM propiedadesxusuarios PXU
  3.                INNER JOIN manzanasxpropiedades MXP
  4.                ON P.idpropiedad = MXP.idpropiedad
  5.                INNER JOIN manzanas M
  6.                ON M.idmanzana = MXP.idmanzana
  7.                INNER JOIN casas C
  8.                ON C.idcasas = PXU.idcasas
  9.                WHERE M.idbarrio =468;
  10.  
  11. SELECT PXU.punto,C.ruta,P.idpropiedad,C.idcasas,P.centro
  12.                FROM propiedades P
  13.                INNER JOIN manzanasxpropiedades MXP
  14.                ON P.idpropiedad = MXP.idpropiedad
  15.                INNER JOIN manzanas M
  16.                ON M.idmanzana = MXP.idmanzana
  17.                INNER JOIN propiedadesxusuarios PXU
  18.                ON PXU.idpropiedad=P.idpropiedad
  19.                INNER JOIN casas C
  20.                ON C.idcasas = PXU.idcasas
  21.                WHERE M.idbarrio =468;


las dos consultas me traen datos que me sirven igual , pero la diferencia es que en la primera utilizo la PK de la tabla propiedades y la segunda la Fk de propiedadesxusuarios?


saludos
  #2 (permalink)  
Antiguo 07/04/2011, 12:59
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.990
Antigüedad: 14 años, 10 meses
Puntos: 80
Respuesta: Cual de estas consultas es mas rapida?

Yo creo que esta es mas rapida:
Código Mysql:
Ver original
  1. SELECT punto,ruta,idpropiedad,idcasas
  2. FROM propiedadesxusuarios
  3.     NATURAL JOIN manzanasxpropiedades
  4.     NATURAL JOIN manzanas
  5.     NATURAL JOIN casas
  6. WHERE idbarrio =468
Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 07/04/2011, 13:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Cual de estas consultas es mas rapida?

Según el manual de referencia:
Cita:
El NATURAL [LEFT] JOIN de dos tablas se define semánticamente equivalente a un INNER JOIN o LEFT JOIN con una cláusula USING que nombra todas las columnas que existen en ambas tablas.
De las dos que propones, la primera:

Código MySQL:
Ver original
  1. SELECT PXU.punto,C.ruta,PXU.idpropiedad,C.idcasas
  2. FROM propiedadesxusuarios PXU
  3.                INNER JOIN manzanasxpropiedades MXP ON P.idpropiedad = MXP.idpropiedad
  4.                INNER JOIN manzanas M ON M.idmanzana = MXP.idmanzana
  5.                INNER JOIN casas C ON C.idcasas = PXU.idcasas
  6.                WHERE M.idbarrio =468;
es la más rápida por dos razones básicas: 1) Usas una tabla menos, lo que implica menos accesos a disco para la lectura, y una tabla derivada menos, y 2) traes una columna menos, lo que implica que pueden entrar más registros por bloque de memoria usado en los datos leídos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 07/04/2011, 14:12
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 9 años, 9 meses
Puntos: 15
Respuesta: Cual de estas consultas es mas rapida?

Muchas gracias por la respuesta, pero supugon que es recomendable usar mejor el NATURAL JOIN , esto mejora el performance?

saludos
  #5 (permalink)  
Antiguo 07/04/2011, 14:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Cual de estas consultas es mas rapida?

Es igual que usar INNER JOIN con USING en lugar de ON.
Código MySQL:
Ver original
  1. SELECT PXU.punto,C.ruta,PXU.idpropiedad,C.idcasas
  2.       propiedadesxusuarios PXU
  3.       INNER JOIN manzanasxpropiedades MXP USING(idpropiedad)
  4.       INNER JOIN manzanas M USING(idmanzana)
  5.       INNER JOIN casas C USING(idcasas)
  6. WHERE M.idbarrio =468;
El parser ejecuta exactamente lo mismo.
La condición es que los campos relacionados tienen que tener el mismo nombre en ambas tablas, exactamente igual que en el NATURAL JOIN.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 07/04/2011, 14:50
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 9 años, 9 meses
Puntos: 15
Respuesta: Cual de estas consultas es mas rapida?

OK muchas gracias me gusta el USING se ve mas clara la consulta , pero en cuanto a redimiento no tienen relevancia?


saludos
  #7 (permalink)  
Antiguo 07/04/2011, 14:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Cual de estas consultas es mas rapida?

Nop. El parser las evalúa de la misma forma. por eso el manual habla de "semánticamente equivalente ".
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 07/04/2011, 15:28
Avatar de RIVERMILLOS  
Fecha de Ingreso: marzo-2010
Mensajes: 1.336
Antigüedad: 9 años, 9 meses
Puntos: 15
Respuesta: Cual de estas consultas es mas rapida?

Que pena ser tan molesto con esto pero estoy obsecionado con el rendimiento de mi aplicacion y la base de datos, y si a la segunda cosulta de las dos primeras, le agredo estos filtros?

Código MySQL:
Ver original
  1. WHERE P.idtipospropiedades=1 AND P.idestadopropiedad!=2 AND M.idbarrio =468


cambiaria en algo o seguiria siendo mas rapida la segunda?


saludos
  #9 (permalink)  
Antiguo 08/04/2011, 04:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.321
Antigüedad: 12 años
Puntos: 2653
Respuesta: Cual de estas consultas es mas rapida?

El WHERE no es optimizable por el parser. Se aplica sobre el resultado final y en definitiva sólo impacta en los datos efectivamente devueltos, lo que significa que lo único que hace es elegir cuáles devolverá, pero el proceso base sigue siendo el mismo.
Es por eso que yo muchas veces recalco que un factor fundamental es la selectividad de las relaciones: Mientras menos registros se obtengan de cada tabla invocada a causa de los INNER JOIN, más rápida será la consulta.
Aumentarle las condiciones del WHERE sólo tendría algún impacto si tienes índices definidos sobre el conjunto de datos, pero por otro lado, si la cardinalidad de los índices es muy alta, tendrán efecto negativo sobre las inserciones/actualziaciones...
__________________
¿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: rapida
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:31.