offset 偏移量参数
- 一般表示距离第一行的序号差是多少,第一行序号为0,偏移量61表示62行数据,
- -
MySQL offset 偏移量语法
- MySQL偏移量常用 select * from cda_form limit 【offset】,【limit】 其中limit表示返回行数的最大数目,如10,表示最多返回10行数据
- 【limit】可以传-1表示取到最后一条数据,即offset后的全部数据,这样,不需要知道总共多少数据,即可按要求查出所有数据
- -
Mybatis offset 偏移量参数
- Mybatis中RowBounds(int offset,int limit)内置对象,不需要再mapper.xml文件中添加“ limit 【offset】,【limit】”句尾,直接通过selectByPage(bean,new RowBounds(offset, limit))即可达到偏移量分页的方法
- Mybatis的分页是逻辑分页,即通过查询返回的ResultSet再分页的方式,实际上没有降低MySQL的查询成本,跟MySQL直接作用在查询语句上面的物理分页 limit 【offset】,【limit】有直接的性能差异
offset,limit 与pageNo,pageSize的关系
pageNo = offset/pagesize +1
pageSize = limit!=-1?limit:(totalcount-offset)
limit 查询优化
- 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较优。这个显然是子查询的原因。
- 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越大,后者越优。
以后要注意改正自己的limit语句,优化一下mysql了