0

Buenas. Mi duda es: Que es mejor en cuanto a legibilidad y rendimiento, usar subconsultas siempre que sea posible o usar el formato "join"? Que es más importante, la legibilidad o el rendimiento? Entendería que muchos dijeran que si la diferencia en rendimiento no va a ser muy grande que prime la legibilidad.

Select * from t1
inner join t2 on t1.k1=t2.k2

O

Select * from t1,t2
where t1.k1=t2.k2

Hay alguna manera alternativa de usar left o right join para sacar los valores nulos, como en oracle cuando se usan el (+)?

select n1,n2
from t1 left join t2 on t1.n1=t2.n2

 n1 n2
 -- --  
 2  2
 3  3
 1  NULL
 4  NULL

Hace un año más o menos recuerdo una guía completa de mysql o sql a secas con todas las sintaxis de cada aspecto de mysql, detallado y explicado como funcionaba cada palabra clave y operación y ahora no soy capaz de encontrar dicha documentación. Solo una documentación muy resumida de la sintaxis de las sentencias.

Lorthas
  • 530
  • 5
  • 18
  • Tu pregunta de los joins ya depende mucho de los "gustos" de cada uno porque la mayoría de las veces da el mismo resultado, yo en lo personal uso subconsultas cuando las uniones son entre demasiadas tablas que no tienen suficiente relación para hacerlo con joins, y lo de los valores nulos a qué te refieres? en la consulta te regresará un valor nulo si la columna lo tiene sin que le tengas que decir más a MySQL – Yikarus Jul 14 '17 at 22:55
  • @Lixus Me refiero a si se puede objeter el mismo resultado que usando un left join pero haciendolo sin usar las sentencias con "JOIN". Por ejemplo, en Oracle se podía usar (+) a izquierda o derecha si no recuerdo mal para obtener tambien las filas que tenian un valor nulo en un capo determinado que te interesaba. Pero la verdad es que me interesa mas el aspecto técnico, porque no sabría cual usar, sobretodo si al final el resultado es casi el mismo po rno decir el mismo. – Lorthas Jul 14 '17 at 22:59
  • Esta la función UNION que pega dos tablas sin importar que tengan la misma cantidad de columnas o no, pero hasta donde se no hay alternativas a las funciones JOIN que tiene MySQL para unir tablas. – Yikarus Jul 14 '17 at 23:02
  • Que tal Lorthas? por empezar lo que estas preguntando no es la diferencia entre JOIN y subconsultas sino entre JOIN explicito y JOIN implícito. Te recomiendo [este enlace](https://es.stackoverflow.com/questions/52530/cual-es-la-diferencia-entre-joins-impl%C3%ADcitos-y-expl%C3%ADcitos). – Patricio Moracho Jul 15 '17 at 00:02

1 Answers1

2

Left/right Join se visializa de esta manera: Left Join

lo y se puede describir como todos los elementos de A y B que se encuentren en contenidos en A (Dejando a los elementos de B que no estan en A fuera)

En logica de conjuntos lo podemos ver como

A ∩ (A ∩ B). A intersección de A intersección B

Se puede representar con el Query:

SELECT *
  FROM A                 //Seleccionamos el conjunto A
  JOIN B ON B.id = A.id  // + Union A + B En este caso comparten id
 WHERE.....              //el where esta de mas aqui
Mariano
  • 23,777
  • 20
  • 70
  • 102
Diego Vallejo
  • 121
  • 1
  • 8