场景
我们使用分页查询时候经常会遇到需要对某个或者某几个字段进行排序,在排序字段有相同值的情况下有可能最后的排序结果不是我们预期的样子,我们来看下一个例子。
表里面的creaet_datetime列的数据是有重复的,一般情况下我们分页的sql是这样的。
第一页
第四页
可以发现,id为8的这条数据出现在了第一页和第页当中,这样就不是我们预期当中的结果。
那这是为什么呢?
分析
在我们以往的经验和理解当中,这里应该是先进行order by排好序,然后再取对应的分页数据。其实在mysql5.7当中并不是这样的,通过查阅 mysql5.7的官方文档可以发现在mysql5.7当中会对limit优化