Wondercease

浙ICP备2022017321号

分页排序 坑

今天解决了一个bug 是分页的时候数据一样导致翻页重复的问题

查了一下网上

原因:

mysql对limit的解释

如果多个行在列中具有相同的值ORDER BY,则服务器可以按任意顺序自由返回这些行,并且根据总体执行计划可能会有所不同。换句话说,这些行的排序顺序对于无序列是非确定性的。

原因的原因:

在MySQL 5.6版本,优化器在遇到order by xxx limit x,x 时,会做一个优化,使用优先队列,来进行排序,这样的好处在于在排序过程中,仅保留需要的n条数据即可。

解决方法:

  1. order by后加一个唯一字段(id)进行排序
  2. 给order by字段加上索引

发表评论

您的电子邮箱地址不会被公开。