mysql数据库根据时间查询的优化

今天 数据库单表查询,根据时间段进行查询,百万级数据量查询速度很慢,所以记录一下解决方法。

1、尽量避免thisTime > startTime and thisTime < endTime这样的语句,反正我自己使用这样的语句查询太慢。

2、使用索引,以查询时间的列建立索引。

3、使用BETWEEN  AND可能效果更好。

例:

SET @yt_bt=DATE_FORMAT(DATE_ADD(now(),INTERVAL -1 day),'%Y-%m-%d 00:00:00');

SET @yt_et=DATE_FORMAT(DATE_ADD(now(),INTERVAL -1 day),'%Y-%m-%d 23:59:59');

select * from test force index(createTime) where 1=1 and  createTime BETWEEN @yt_bt AND @yt_et;

我这里使用了强制索引,因为我测试的时候发现,如果查询时间区间超过20天,mysql默认不使用索引,而进行全局搜索。

记录一下,以免遗忘。

你可能感兴趣的:(mysql)