0

我有一个在 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 条件是否更有效,例如WHERE date < '2012-08-07'位于最内部的子查询(如图所示)或最外部的子查询中?

我正在使用的实际查询有另一个外层查询,但出于这个问题的目的,我相信这个例子会起作用。

4

2 回答 2

0

它取决于数据,但通常内部子查询的日期检查应该更快。

于 2012-08-07T21:01:42.323 回答
0

如您所知,您可以在没有子查询的情况下表达这一点:

SELECT date, sum(total)/count(distinct id)
FROM table
WHERE date < '2012-08-07'
GROUP BY date

这可能会更快一些(尽管COUNT(DISTINCT)可能很昂贵)。

于 2012-08-07T21:45:50.970 回答