我看了其他网友整理的分页优化,方法好多种(7种的也有,八种的也有)。其实有些方法看似不同,其实原理是一样的,因此我重写整理了以下四种方法。
- 使用主键id来优化
语句样式1:SELECT * FROM tableName WHERE id_pk > ((pageNum-1) * pageSize) ORDER BY id_pk ASC LIMIT pageSize
解析:因为依赖主键自增,可直接定位主键偏移量,避免了从头遍历,因此效率非常高。但是只支持升序,不支持降序。
语句样式2:SELECT * FROM tableName WHERE id_pk between 100000 and 10200 ORDER BY id_pk ASC LIMIT pageSize
解析:照比样式1,就是确定了主键id的范围,也不需要从头遍历,效率高。
2)使用主键id同时使用prepare。
语句样式:prepare pre_d from ‘select * from testpage where tid> (?*?) order by tid limit ?’;
set @a = 9;
set @b = 10;
execute pre_d using @a,@b,@b;
Prepare的原理
Prepare SQL产生的原因。首先从mysql服务器执行sql的过程开始讲起,SQL执行过程包括以下阶段 词法分析->语法分析->语义分析->执行计划优化->执行。词法分析->语法分析这两个阶段我们称之为硬解析。词法分析识别sql中每个词,语法分析解析SQL语句是否符合sql语法ÿ