首页 > 解决方案 > SQL/MySQL:SELECT sum() with JOIN VS SELECT with subselect/subquery

问题描述

任何人都可以向我解释哪个查询性能更高,幕后的区别是什么?

SELECT PRODUCT.id, SUM(PRODUCTION.quantity)
FROM PRODUCT 
LEFT JOIN PRODUCTION ON PRODUCT.id = PRODUCTION.product_id
GROUP BY PRODUCT.id

相对

SELECT 
    PRODUCT.id, 
    (SELECT SUM(quantity) 
     FROM PRODUCTION 
     WHERE PRODUCTION.product_id = PRODUCT.id)
FROM PRODUCT

这两个查询产生相同的结果。

标签: mysqlsqljoinsubquerysql-subselect

解决方案


两个查询都不相同。在第一个查询中,您使用的是 LEFT OUTER JOIN,但在子查询中,您使用的是内部连接 ​​product_id。

现在在性能方面,与子查询相比,这将为您提供良好的性能

SELECT PRODUCT.id, SUM(PRODUCTION.quantity)
FROM PRODUCT LEFT JOIN PRODUCTION ON PRODUCT.id = PRODUCTION.product_id
GROUP BY PRODUCT.id

推荐阅读