您的位置:首页 > 数据库 > MySQL

Mysql 关于时间范围查询的优化思路

2019-10-11 07:05 4183 查看
ps:先说说写这个文章的原因吧, 因为我实在受不了这个mysql 时间范围查询如此之慢 。没办法总结出一些思路

这里只给出几点有关mysql 查询时间范围的建议

  • 改用datetime timestamp 为时间戳int 模式。

来说说为什么,我们在查询数据库时间范围的时候 使用between and 时,我们可以采取explain 来测试一下mysql 的查询过程,很容易发现在between 查询时间范围时 type 为ALL Using Where 全表扫描不是我们想要的模式。我们可采取的优化思路就是换成int 的时间戳模式,在逻辑处理的时候增加一个时间转换。当然 在时间范围查询比较麻烦的时候。这样索引很容易命中。

  • 一定要使用datetime timestamp时 可以采取的思路

首先就是分离出子查询,一定要将含时间范围的子查询分离出来,能使用查询索引,尽量命中索引。尽量避免多查询连接join,会更加拖慢mysql 的查询效率。

  • 关于datetime 和 timestamp 的查询效率问题

首先要说明的是,几乎没啥区别,如果说有区别的话,那就是datetime的时间范围逼timestamp要大, 同时timestamp 比datetime 更节省空间,至于选择哪个类型,个人见仁见智。

  • 最后要说的

虽然文章很短。 但是这个过程是心酸的,被领导逼的。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MySQL