mysql - 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
这两个查询产生相同的结果。
解决方案
两个查询都不相同。在第一个查询中,您使用的是 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
推荐阅读
- python - 仅给定闭包函数,如何访问已关闭的变量?
- reactjs - React Router 中的“React 无法识别 DOM 元素上的道具”
- java - InputStream 和 BufferedReader
- java - 如何将驱动程序分配给 UNO DiscardPile.java?
- python - 仅在从相邻文件导入函数时发生错误
- javascript - 试图理解 node.js REPL 中的 spawn
- javafx - 使用带有文本字段的子字符串方法时出错
- java - 从 java Grpc 服务器调试线程转储?
- c++ - 实现链表时程序挂起
- css - WTForms 标签位置/隐藏标签