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

Es correcta esta consulta a multiples tablas?

Estas en el tema de Es correcta esta consulta a multiples tablas? en el foro de Mysql en Foros del Web. Hola amigos, quería saber que opinan de esta consulta. Estuve buscando formas de hacerlas sin usar JOIN ni sus derivados, ya que tengo entendido consumen ...
  #1 (permalink)  
Antiguo 02/09/2014, 12:05
 
Fecha de Ingreso: marzo-2013
Ubicación: Neuquén Capital
Mensajes: 111
Antigüedad: 11 años, 1 mes
Puntos: 8
Es correcta esta consulta a multiples tablas?

Hola amigos, quería saber que opinan de esta consulta. Estuve buscando formas de hacerlas sin usar JOIN ni sus derivados, ya que tengo entendido consumen más recursos.

La consulta es para obtener datos de 2 tablas basandose en un mismo id.

Código MySQL:
Ver original
  1. SELECT t1.dato1, t2.dato2, t2.dato3 FROM t1,t2
  2. WHERE t1.id = (SELECT ANIDADO) AND t2.id = t1.id

El tema está en el ultimo t2.id = t1.id esta bien hacer eso? La idea es que la consulta busque con el select anidado los ids que me sirven, y despues comprobar que los t1.id que ya se saben cuales son sean iguales tambien a t2.id.

La consulta me parece que me funciona pero no es el tema ese!

Gracias a los que respondan! :D

Última edición por gnzsoloyo; 02/09/2014 a las 12:14
  #2 (permalink)  
Antiguo 02/09/2014, 12:19
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: Es correcta esta consulta a multiples tablas?

Por empezar, en esa consulta no estás evitando los JOIN, sólo los explícitos, porque la coma es un JOIN implícito para el DBMS, tanto en MySQL como en cualquier otro. Y en el caso particular de MySQL podría generar un producto cartesiano, además de resultados falsos dependiendo de ciertas cosas.
En segundo lugar, la consulta como la planteas, aunque no fuese un JOIN implícito, es terriblemente ineficiente, porque en MySQL lo primero que se hace es leer todo lo que el from devuelva, para después aplicar la condición, con lo que la cantidad de bloques de datos que se lean pueda ser muy elevada innecesariamente.

Pero lo más preocupante es que digas
Cita:
Estuve buscando formas de hacerlas sin usar JOIN ni sus derivados, ya que tengo entendido consumen más recursos.
pues la verdad es que no tengo idea de dónde escuchaste eso, pero no es cierto.
¿A qué "más recursos" te refieres y en qué contexto?
__________________
¿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 02/09/2014, 12:27
 
Fecha de Ingreso: marzo-2013
Ubicación: Neuquén Capital
Mensajes: 111
Antigüedad: 11 años, 1 mes
Puntos: 8
Respuesta: Es correcta esta consulta a multiples tablas?

Pues la verdad eso había leido en algún Blog hace un tiempo, y no recuerdo cual fue. Es bueno saber que es un error, :) ya que se abren más las posibilidades.

Cual sería la mejor forma de realizar esa consulta?


Gracias gnzsoloyo!
  #4 (permalink)  
Antiguo 02/09/2014, 12:46
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: Es correcta esta consulta a multiples tablas?

Una forma simple es hacer, por ejemplo, si buscases una lista dada de IDs:
Código SQL:
Ver original
  1. SELECT t1.dato1, t2.dato2, t2.dato3
  2. FROM t1 INNER JOIN t2 ON t2.id = t1.id
  3. WHERE t1.id IN (23, 67, 1, 59, 120)
Esto funcionará muy eficientemente, en especial con tablas de tipo InnoDB, donde se hayan definido las relaciones de FK, ya que al crear claves foráneas se crean índices específicos que permiten a MySQL optimizar la busqueda por medio del JOIN indicado en el FROM.

PD: Los blogs de aprendices, y en especial los de autodidactas en BBDD suelen tener errores por falencias técnicas. Sin ofender.
BBDD es algo que sólo se domina por estudio formal e intensa práctica. Muchos conceptos son complejos y bastante largos de aprender cuando intentas hacerlo por tu cuenta. Sin la guia de expertos, sean o no profesores, se cae constantemente en errores de todo tipo.
No es lo mismo que practicar programación en cualquier lenguaje... Es lo más cercano al Análisis de Sistemas que vas a encontrar.
__________________
¿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; 02/09/2014 a las 12:57

Etiquetas: correcta, join, multiples, select, tabla
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 16:16.