我有以下疑问:
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索引的问题。也许值得一读。