mysql 分页查询出现重复数据问题排查
mysql 分页查询出现重复数据
2019的最后一天,才发现今年快过去了,就想着写点东西纪念一下,而且正好昨天项目上遇见一个让我感到很奇怪的问题,一个简单的分页查询居然出现问题了,让人难以置信啊,但是问题就是出现了。所以现在就将我对这件事的问题排查过程做一个简单的记录。希望能帮助到大家。顺便方便自己做一个遇到问题的记录吧!
问题分析定位
在测试提供的测试用例以后,我测试了一下,在查第二页和第三页的数据里面确实有重复的数据,这真的很神奇。
1.我的第一反应就是分页插件有问题,所以将每次请求的sql语句打印出来看一下,发现没啥问题啊。这就很尴尬啊。
2.然后就不用分页,将分页干掉,然后查询出来整体数据,发现没啥问题,那就表明出现问题的地方在分页上面。但是问题有出来了,我大mysql的分页语句limit会有问题么?
3.问题出现的地方找到了,发现问题,那就要去解决。然后经过查询资料和百度了一下,发现这个问题是我们 order by 语句与limit分页语句组合在一起出现了问题
问题解决方案
- 因为我们在使用order by
字段
时,如果这个排序字段会有相同的值,这个时候与limit组合以后就会出现数据重复现象。那这是为啥呢?经过了解,这个问题是在mysql5.6以后才会出现,mysql5.5不会出现。这是由于mysql5.6做了优化,将排序方法改成了堆排序,堆排序每次请求的结果都会不一致。 - 这个问题我的解决