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

Hay alguna diferencia entre = o join??

Estas en el tema de Hay alguna diferencia entre = o join?? en el foro de Mysql en Foros del Web. Resulta que para yo realizar un query relacional(2 ó mas tablas), no utilizo la instrucción join(y ninguno de sus derivados), siempre uso: Código: select ... ...
  #1 (permalink)  
Antiguo 10/09/2008, 08:04
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Hay alguna diferencia entre = o join??

Resulta que para yo realizar un query relacional(2 ó mas tablas), no utilizo la instrucción join(y ninguno de sus derivados), siempre uso:

Código:
select ... from tabla, tabla2 where tabla.campo=tabla2.campo ...
Me entienden? Utilizo =(el signo igual) A lo que voy es que no sé cuál de los dos métodos es mejor u óptimo? Si usar la instrucción join o como lo hago yo?

De antemano gracias,

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #2 (permalink)  
Antiguo 10/09/2008, 08:29
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Hay alguna diferencia entre = o join??

No notarás la diferencia si la consulta opera sobre tablas reducidas, pero a medida que las tablas crecen descubrirás que la performance baja.

Piensa esto: Si se molestaron en crear un algoritmo para hacer el JOIN, entonces el mismo no debe operar de la misma forma que un "=". ¿No te parece?

El tema, en principio, es que el "=" implica que el motor debe levantar todos los registros de las tablas implicadas porque a priori no sabe cuáles son los que se relacionarán. Luego va haciendo el barrido de a uno por vez entre cada registro de la primera tabla con cada registro de la segunda tabla (y lo mismo si hay más tablas)... Imagínate el tiempo usado para eso. Ese proceso es lo que se denomina producto cartesiano y es el peor escenario posible en una consulta.
El JOIN, por su parte, va comparando los valores de la segunda tabla con los de la primera solamente con los campos implicados en el ON, y únicamente lee los registros si hay coincidencia en ese campo. Sino, los ignora. El método es mucho más eficiente porque no lee registros inútiles. De hecho, si hay índices definidos sobre los campos del ON, el JOIN cruza la primera tabla con el índice, no con la tabla, y lee los registros coincidentes o no lee ninguno si los datos que busca están todos en el índice.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 10/09/2008, 10:10
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Respuesta: Hay alguna diferencia entre = o join??

Holas !!! nada mas felicitar por el aporte de gnzsoloyo mejor explicado imposible . Saludos Carxl !
__________________
->Aprender es un proceso que incluye el error..
  #4 (permalink)  
Antiguo 10/09/2008, 13:16
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Hay alguna diferencia entre = o join??

Gnzsoloyo, gracias por la explicación man... suponía que tenían que ser diferentes los dos... Ahora me queda claro, utilizar join Buen dato man

Cómo vas Cala? Todo bien??

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
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 15:32.