MYBLOG

欢迎来到小马哥的个人博客~

MySQL order by limit 分页数据重复问题 并 丢失其他数据

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` 把索引字段作为 附加条件 进行排序 就可以了