我有以下查詢:Mysql的優化查詢:試圖讓子查詢
SELECT AVG(time) FROM
(SELECT UNIX_TIMESTAMP(max(datelast)) - UNIX_TIMESTAMP(min(datestart)) AS time
FROM table
WHERE id IN
(SELECT DISTINCT id
FROM table
WHERE product_id = 12394 AND datelast > '2011-04-13 00:26:59'
)
GROUP BY id
)
as T
查詢得到最大datelast值和每一個ID的最大datestart值(即長度減去它用戶會話),然後對其進行平均。
最外面的查詢只有平均結果時間。有沒有什麼辦法來優化這個查詢?從EXPLAIN
輸出:
id select_type table type possible_keys key key_len ref rows extra
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 7
2 DERIVED table index NULL id 16 NULL 26 Using where
3 DEPENDENT SUBQUERY table index_subquery id,product_id,datelast id 12 func 2 Using index; Using where
您的問題缺少信息,例如已索引的內容,您的EXPLAIN SELECT輸出內容等等。 – 2011-04-13 10:58:30
更新的原文。 – Tony 2011-04-13 11:06:20