2012-08-07 67 views
0

我有一個包含FROM子句中的子查詢的查詢。查詢的結構是這樣的:關於WHERE條件的子查詢效率

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'條件是最內子查詢(如所示)或最外面的子查詢內?

我正在使用的實際查詢具有另一個查詢外層,但爲了這個問題的目的,我相信這個例子會起作用。

+0

你在兩個版本上都檢查過'EXPLAIN'計劃嗎? – Taryn 2012-08-07 20:45:01

回答

0

它依賴於數據,但通常內部子查詢上的日期檢查應該更快。

0

只要你知道,你可以表達這一點沒有子查詢:

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

這可能是一個快一點(雖然COUNT(DISTINCT)可能很昂貴)。