我正在从mysql数据库表中选择数据。
当我搜索特定日期时,我的索引很好。
当我在两个日期之间搜索数据时,索引不起作用,查询花费了很长时间。
有谁知道如何改善查询或索引?

查询A:

EXPLAIN SELECT * FROM sal_import
WHERE dateStats>="2011-07-28" AND dateStats<="2011-07-30" GROUP BY f_shop


id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  i   range   dateStats   dateStats   3   (NULL)  7896    Using where; Using temporary; Using filesort


查询B:

EXPLAIN SELECT * FROM sal_import i
WHERE dateStats="2011-07-30" GROUP BY f_shop


id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  i   ref dateStats   dateStats   3   const   2182    Using where


这是表的索引:

ALTER TABLE sal_import ADD INDEX(dateStats,f_shop);


非常感谢你。

最佳答案

尝试这个:

SELECT * FROM sal_import WHERE dateStats BETWEEN '2011-07-28' AND '2011-07-30'


另请参见http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

09-27 00:11