0

Tengo dos tablas una de Productos y otra de Ventas.

La de Productos tiene dos campos id y nombre y la de Ventas tiene id, producto_id y client_id

Si quiero obtener mis productos vendidos a un determinado cliente normalmente haría algo como esto:

SELECT `products`.* 
FROM `products` 
JOIN `sales` ON `sales`.`product_id` = `product`.`id` 
WHERE `sales`.`account_id` = 1

Y me da el resultado correcto, mi duda es hay alguna diferencia entre esa consulta y esta otra:

SELECT `products`.* 
FROM `products`,`sales` 
WHERE `sales`.`account_id` = 1 AND `products`.`id` = `sales`.`product_id`

Pues al parecer me da el mismo resultado.

Nota ese dilema lo vi en otra publicación dejo el link

Consulta SQL a dos tablas

Super agradecería saber que consulta es mejor y más eficiente.

A. Cedano
  • 86,578
  • 19
  • 122
  • 221
  • 6
    ¿Responde esto a tu pregunta? [¿Cual es la diferencia entre joins implícitos y explícitos?](https://es.stackoverflow.com/questions/52530/cual-es-la-diferencia-entre-joins-impl%c3%adcitos-y-expl%c3%adcitos). Puedes ver también [esta otra pregunta](https://es.stackoverflow.com/q/74498/29967) que trata sobre lo mismo. – A. Cedano Dec 14 '19 at 11:34
  • No hay diferencias, el planner(el servicio de la base de datos que se encarga de decidir cual es la forma mas optima de realizar la query que le pasas a la base de datos) va a ejecutar las 2 consultas de la misma forma; aunque hay casos donde si tienes 2 consultas muy complejas y ambas te dan la misma informacion, el planner tomara distintas formas de ejecutar las queries y por tanto distintos tiempos, para optimizar esto se hace tunning en la base de datos. – Junior Usca Dec 14 '19 at 13:33

1 Answers1

1

En su mayor parte, si tienes los id correctos y realizas correctamente tus INNER/LEFT/RIGHT JOIN generalmente será más rápido hacer 1 viaje que varios [concatenar selects].

Andres Delzo
  • 92
  • 1
  • 9