关于WHERE条件的子查询效率

时间:2012-08-07 20:42:29

标签: mysql

我有一个查询,其中包含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条件放在最内部子查询(如图所示)或大多数外部子查询中是否更有效?

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

这可能会快一些(虽然COUNT(DISTINCT)可能很贵)。