欢迎访问广西陌上网络科技有限责任公司官网 · 专注企业数字化管理软件定制开发 客服热线:黄生 15678982250

mysql使用order by desc倒序查询慢

更新时间:2024-04-27 浏览:5105 标签:mysql order desc 倒序 

数据表结构,该表数据量有3千万+,每天几万的速度在增加。

id自增,device_id,lng,lat,speed,mile,direct,create_time
索引字段:device_id,create_time

需求:查询某时间段内设备的里程数。

初级写法

1、找到最小的公里数,SQL语句:select mile from device_gps where create_time>开始时间戳 order by id limit 1;

2、找到最大的公里数,SQL语句:select mile from device_gps where create_time<结束时间戳 order by id desc limit 1;

结果语句1运行很快,语句2即使只查询1条数据,还是花了6秒左右。用explain查看,走的也是ID主键索引,貌似没用还是慢,跟PHPMYADMIN的翻页效率一样。


语句2改进写法,未超过1秒,接受了。

select mile from device_gps where create_time<结束时间戳 order by create_time desc limit 1;

网上大佬的解释:使用order by 后需跟WHERE条件的索引一致


老油条写法

一条SQL语句

select min(mile) as min_mile,max(mile) as max_mile from device_gps where create_time>开始时间戳 and create_time<结束时间戳




0.089025s