如何在Mysql中优化日期时间搜索?

qin*_*ang 9 mysql search datetime

这是我的基本日期时间结构:

primary  key(datetime)         key
auot_id  date_time             user_id
1        2010-10-01 20:32:34    1
2        2010-10-02 20:32:34    1
3        2010-11-03 20:32:34    2
4        2010-10-04 20:32:34    1
5        2010-11-05 20:32:34    1
Run Code Online (Sandbox Code Playgroud)

我想获得day(date_time)at 的结果,'2010-10'user_id = '1'; My SQL是:

SELECT * FROM datetime WHERE user_id = 1 AND DATE_FORMAT(date,'%Y-%m') = '2010-10'
Run Code Online (Sandbox Code Playgroud)

EXPLAIN代码显示:

SIMPLE datetime ALL (NULL) (NULL) (NULL) (NULL) 5 Using where
Run Code Online (Sandbox Code Playgroud)

所以,这行代码似乎不是非常有效.我怎么能构建表来使我的搜索更有效?

非常感谢你!!

Mar*_*ers 13

在WHERE子句中使用列上的函数可以防止在该列上有效使用索引.试试这个:

SELECT *
FROM `datetime`
WHERE user_id = 1
AND `date` >= '2010-10-01' AND `date` < '2010-11-01'
Run Code Online (Sandbox Code Playgroud)

添加索引(user_id, date).