我的联系方式
微信luoluo888673
QQ951285291
邮箱951285291@qq.com
2020-12-26学海无涯
最近一直在学习.netcore 跨平台开发,基本熟悉了Linux、nginx等操作,最近发现了一个mysql的问题,研究了大半天终于发现了问题所在,记录一下以防忘记,也是给大家提个醒。
现象:
order by和limit经常用来做数据分页显示并排序,但是在按时间戳升序排列并用limit分批读取数据时,却会有某些记录丢失或数据重复展示
解决方法:
经过学习 发现 在MySQL 5.6的版本上,优化器在遇到order by limit语句的时候,做了一个优化,即使用了priority queue。
若再想 使用 order by 加 limit的 形式
1、 就只能 使用 索引 进行排序
2、如果使用其他字段排序的话,就只能进行 双排序
也就是 ORDER BY `sort` DESC,`id` 把索引字段作为 附加条件 进行排序 就可以了