db2分页技术优化问题:
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了db2分页技术优化问题:相关的知识,希望对你有一定的参考价值。
在SQL语句后面加入了 " order by aa asc fetch first 20 rows only " 取0-20的数据 当取第一页的时候会显示20条数据,但是当点击下一页的时候(20-40)数据就为空了,其实是有数据的。可能跟 fetch first 20 有关,但是必须得加上这句话,请问各位大侠有没有什么解决办法啊。
fetch first 20 rows only 是提取前20条数据的不能作为分页来使用。
分页有三种:
1、 如果一定要使用fetch first 20 rows only 的方式,可以使用WITH AS 方式实现:
-------------------------------------------------
WITH TMP AS(
select * from (
select *,rownumber() over(order by id asc ) as row_id from table_name
) where row_id > (pagenumber-1)*pagesize
)
SELECT TMP.* FROM TMP WHERE fetch first pagesize rows only
-------------------------------------------------
2、比较常见的SQL分页,可以使用沈阳java网友的写法:
-----------------------------------------------------
select * from (
select *,rownumber() over(order by id asc ) as rowid from table_name
)as a
where a.rowid >= (pagenumber-1)*pagesize+1 AND a.rowid <= pagenumber*pagesize
-------------------------------------------------------
3、使用PageHelper分页插件,也可以实现自动分页:
使用方法
--------------------------------------------------------------
a.引配置
<plugins>
<plugin interceptor="com.github.pagehelper.PageHelper">
</plugins>
-------------------------------------------------------------
b.使用:
LogInfoQuery example = new LogInfoQuery();
example.setOrderByClause(" id desc ");
Criteria criteria = example.createCriteria();
if(null != logInfo.getStartTimeQuery() && null != logInfo.getEndTimeQuery())
criteria.andOpTimeBetween(logInfo.getStartTimeQuery(), logInfo.getEndTimeQuery());
PageHelper.startPage(page.getPageNo(), page.getPageSize());
List<LogInfo> result = logInfoMapper.selectByExample(example);
PageInfo<LogInfo> pageInfo = new PageInfo<>(result);
return pageInfo;
-------------------------------------------
使用示例结束。
如果不懂可以追问。
MySQL大数据量分页查询方法及其优化
参考技术A 使用子查询优化大数据量分页查询这种方式的做法是先定位偏移位置的id,然后再往后查询,适用于id递增的情况。
使用id限定优化大数据量分页查询
使用这种方式需要先假设数据表的id是连续递增的,我们根据查询的页数和查询的记录数可以算出查询的id的范围,可以使用 id between and 来查询:
当然了,也可以使用in的方式来进行查询,这种方式经常用在多表关联的情况下,使用其他表查询的id集合来进行查询:
但是使用这种in查询方式的时候要注意的是,某些MySQL版本并不支持在in子句中使用limit子句。
参考 sql优化之大数据量分页查询(mysql) - yanggb - 博客园 (cnblogs.com)
以上是关于db2分页技术优化问题:的主要内容,如果未能解决你的问题,请参考以下文章
Mysql分页优化(100000条数据以上的查询),求指点~方法~ 有例子更好,网上的没看懂~