【发布时间】:2020-12-07 14:20:15
【问题描述】:
假设我有一个问题:
SELECT SUM(Data1), SUM(Data2), UserID
FROM Table1
WHERE Data1 IN (1, 2, 3)
AND USERID IN (SELECT USERID IN SOME SMALLISH Table of ~10000 Values)
GROUP BY UserID
此查询的性能如何?将其包装在 CTE 中并在分组后过滤掉 USERID 会更好吗?它会用 IN 扫描每一行吗?那么第一组应该快了吧?
编辑:添加了用户@jarlh 提到的缺失聚合
【问题讨论】:
-
这取决于数据库、表上的索引和分区,还可能取决于其他因素(取决于数据库)。
-
如果您必须使用默认解决方案,您会使用哪个?哪些因素会影响你朝一个或另一个方向发展?
-
不进行聚合时为什么要使用 GROUP BY?只需执行 SELECT DISTINCT!
-
对不起,这是我的错,实际上有一个聚合,它是我将编辑的 SUM。谢谢你告诉我。
-
相信优化器,写出易读的SQL!
标签: sql db2 subquery query-optimization