有个数据量 7107146 的大表,分页使用 limit m,n 越到后面速度越慢。
可以看到使用 limit m,n 的方式进行分页时,翻到最后一页尽然要9.439秒。
尝试了好几种方法,发现最快的方法是:
可以看到由 9.439秒直接下降到 0.061秒。而且这种方法基本不受第几页的影响,第一页和最后一页的速度是一样的。
原理都是,通过 主键 B+树,一般也就2到3层,最多3到4层,也就是说通过B+树 直接定位到 7107046 这一条记录,然后顺序读取100条记录。
第一页和最后一样都是一样的查找路径。
绝对是最优的分页方法。