【发布时间】:2011-02-12 20:25:11
【问题描述】:
如果我需要在 WHERE 条件相似的情况下获得五个以上不同的 SUM 值,最好(也许是唯一的)方法是通过一个包含五个子查询的查询来做到这一点?例如,我的查询是:
SELECT user,
(SELECT SUM(amount) FROM table t, table2 t2 WHERE t.table2_id = t2.id AND table2.type = 1 AND user = 1 AND date = x) AS one,
(SELECT SUM(amount) FROM table t, table2 t2 WHERE t.table2_id = t2.id AND table2.type = 2 AND user = 1 AND date = x) AS two,
(SELECT SUM(amount) FROM table t, table2 t2 WHERE t.table2_id = t2.id AND table2.type = 3 AND user = 1 AND date = x) AS three,
(SELECT SUM(amount) FROM table t, table2 t2 WHERE t.table2_id = t2.id AND table2.type = 4 AND user = 1 AND date = x) AS four,
(SELECT SUM(amount) FROM table t, table2 t2 WHERE t.table2_id = t2.id AND table2.type = 5 AND user = 1 AND date = x) AS five
FROM table
WHERE user = 1
到目前为止,我的查询速度非常快,但是当有更多记录时,我担心五个以上子查询的含义。
出于好奇,这样一个带有五个子查询的查询是否比五个单独的查询具有性能优势/劣势?我假设它更快,因为它只是一次访问数据库而不是 5 次?
编辑:有一个大约 60 条记录的表 2,用于对表 1 中的数千条记录进行分类。表 2 中的每条记录都按 1 - 5 的类型值分类(这是我正在使用的对我想要总和的项目进行分组)。
【问题讨论】:
-
为了[神名]的爱,请在以后的问题中使用您的真实表格和真实数据。这种对真实情况的简化实际上并没有让你更快地得到正确的答案。很多时候,它只会给你一个错误的答案,除了你自己之外没有任何人的错。
-
是的,我注意到了。再次感谢您的时间和帮助。
标签: mysql performance query-optimization subquery