mysql limit分页优化方法(limit offset语法)

发布时间:2019-10-05编辑:脚本学堂
有关mysql limit分页查询的优化方法,mysql分页代码中offset选项的优化技巧,如何写出更高效的mysql分页查询语句,需要的朋友参考下。

mysql/fenye/ target=_blank class=infotextkey>mysql分页查询优化,针对limit的优化。
mysql limit分页时,有一个致使的弱点,就是当数据量大时,limit的性能会急剧下降。

例如,取10条数据
 

select * from yanxue8_visit limit 10000,10 与
select * from yanxue8_visit limit 0,10
 

就不是一个数量级别的。

关于limit语句的优化:
不要直接使用limit,首先要获取到offset的id,然后直接使用limit size来获取数据,明显要好于直接使用limit。

分两种情况进行测试。(测试环境win2033+p4双核 (3GHZ) +4G内存 MySQL 5.0.19)

1、offset比较小时
 

复制代码 代码示例:
select * from yanxue8_visit limit 10,10
多次运行,时间保持在0.0004-0.0005之间
Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10,1
) limit 10
 

多次运行,时间保持在0.0005-0.0006之间,主要是0.0006

结论:
偏移offset较小时,直接使用limit较优。
这显然是子查询的原因。

2、offset较大时
 

select * from yanxue8_visit limit 10000,10
 

多次运行,时间保持在0.0187左右
 

Select * From yanxue8_visit Where vid >=(
Select vid From yanxue8_visit Order By vid limit 10000,1
) limit 10
 

多次运行,时间保持在0.0061左右,只有前者的1/3。可以预计offset越大,后者越优。