我有以下疑问:

SELECT COUNT(sid),fDate,COUNT(DISTINCT(cid))
    FROM forwarding
    WHERE fDate BETWEEN "2011-06-01" AND "2011-06-30"
    GROUP BY fDate

explain提供以下输出:
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)

谢谢你的帮助。
更新:
现在我在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_u shop的索引,但是性能会变慢。什么是完美的解决方案?
谢谢你

最佳答案

How MySQL Uses Indexes回答了我所有关于mysql索引的问题。也许值得一读。

08-26 22:47