我有一个查询,其中包含FROM子句中的子查询。查询的结构如下所示:
SELECT date, avg(total)
FROM(
SELECT date, id, sum(actions) as total
FROM table
WHERE date < '2012-08-07'
GROUP BY date, id
) subquery
GROUP BY date
将WHERE date < '2012-08-07'
等WHERE条件放在最内部子查询(如图所示)或大多数外部子查询中是否更有效?
我正在使用的实际查询有另一个外层查询,但出于这个问题的目的,我相信这个例子会起作用。
答案 0 :(得分:0)
它取决于数据,但通常对内部子查询的日期检查应该更快。
答案 1 :(得分:0)
您知道,您可以在没有子查询的情况下表达这一点:
SELECT date, sum(total)/count(distinct id)
FROM table
WHERE date < '2012-08-07'
GROUP BY date
这可能会快一些(虽然COUNT(DISTINCT)
可能很贵)。