我正在从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