作者:业余草
来源:https://www.xttblog.com/?p=4631
这个问题相信不少人都遇到过,但很少有人追根溯源。 今天我抽出一点时间,来讨论讨论 order by + limit 在什么情况下会出现分页数据重复。 昨天在“CTO”群提问了之后,不少大神都回答的相当正确。 我这里结合一下他们的回答,并补充一些内容分享给大家! 排序离不开算法,在关系型数据库中,往往会存在多种排序算法。 通过 MySQL 的源码和官方文档介绍可以得知,它的排序规律可以总结如下:当 order by 不能使用索引进行排序时,将使用排序算法进行排序;
若排序内容能全部放入内存,则仅在内存中使用快速排序;
若排序内容不能全部放入内存,则分批次将排好序的内容放入文件,然后将多个文件进行归并排序;
若排序中包含 limit 语句,则使用堆排序优化排序过程。