【发布时间】:2015-03-11 18:36:53
【问题描述】:
我正在使用以下模板进行分页查询:
select * from (select rownumber() over
( order by aaa.x ) as rownum, aaa.abc, aaa.bcd,bbb.cde from aaa as aaa
left join bbb on aaa.colx= bbb.coly where aaa.where1 = 'xxx'
) as tempresult where rownum between 101 and 200
假设页面大小为 100 个项目,第一个页面查询将是相同的事情,将 rownum 条件替换为:
where rownum <= 100
我面临的情况是第一页执行得非常好(
- 谁能解释一下为什么会这样?
- 有什么方法可以稍微修改这个查询模板以获得更好的性能?
- 是否有任何完全不同的策略可以表现得更好?
附加信息:
- 我使用 DB2 v9.7.400.501
- 没有限制关键字
- 由于客户限制,我无法创建视图或存储过程
- 我无法创建任何其他索引
- 尝试从 rownumber() no rank() 切换,但没有任何改变
【问题讨论】:
标签: performance pagination db2