MYSQL分页细节
在传统项目里面mysql 的分页最常用的方式就是limit O,N的方式来达到分页查询。简单方便,当数据量不大的时候这样写是没有什么问题,可是在互联网公司,数据量大的时候,千万级数据量时在遇到超大分页偏移量时mysql的查询效率就会直线下滑。
分页SQL的耗时是和start值的增加而成倍增加的。
一目了然,start的数值决定查询时间。由于我数据库数据量没有百万级就不再往上加了。
优化思路:
-
尽可能从索引中直接获取数据,避免或减少再次扫描行数据的次数(也就是我们通常所说的避免回表);
-
尽可能减少扫描的记录数,也就是先确定起始的范围,再往后取N条记录。
对比上面的SQL分页。 0.064s 降低到了 0.013s
单从提升比例说,还是挺可观的