Yii2

来源:互联网 发布:python 循环读取文件 编辑:程序博客网 时间:2024/05/17 19:22

使用ActiveData 分页数据有重复的问题

在写一个分页数据时,已经使用了一个字段来做排序,结果出现部分数据丢失,部分数据重新显示在不同的页上。

最初判断为使用 ActiveData 不当造成的。对比之前正常的代码,并没有发现问题。经过排查,当去掉加上的排序规则后,发现数据又能够正常显示完整,初步认定为排序规则出错。
解决方案:给排序加上一个主键倒序。完美实现

原因:
通过分页查询的sql是分多次执行,可以看做成多条不同的sql。当数据量过多时,出现默认排序相同的多条数据。这时出现无序的情况,按照mysql的机制,会按照自身默认的排序重新查找数据,这时就出现了重复现象。

在这里记录一下,以后遇到类似问题

关于mysql自身机制这块原理,留着后面在梳理。

补充

发现一个比较好理解的案例
1、SQL分页排序的实现与分页数据重复问题