我有以下查詢:MySQL查詢提高性能
SELECT COUNT(sid),fDate,COUNT(DISTINCT(cid))
FROM forwarding
WHERE fDate BETWEEN "2011-06-01" AND "2011-06-30"
GROUP BY fDate
解釋給我下面的輸出:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE forwarding index fDate,fDate_2 fDate_2 3 1481127 Using where
你可以看到,有大量的數據。 總工作時間爲12秒。 我該如何提高性能?我不知道我可以做更多的設置索引。
有我的索引此表:
fDate (fDate, f_shop)
fDate2(dDate),
f_shop(f_shop)
謝謝您的幫助。
UPDATE:
現在我在where子句中添加一列,查詢慢得多然後之前。
SELECT COUNT(sid),fDate,COUNT(DISTINCT(cid)) FROM forwarding
WHERE fDate BETWEEN "2011-06-01" AND "2011-06-30" AND f_shop=10077 GROUP BY fDate
我有一個關於forwardDate和f_shop的索引,但性能會變慢。什麼是完美的解決方案? 謝謝
嘗試'(fDate,cid)'索引。 –
如果'sid'不能爲'NULL',請使用COUNT(*)而不是COUNT(sid) –
問題:是'DATE'類型還是'DATETIME'類型的'fDate'? –