0
I'm使用以下模板做分页查询:DB2分页查询性能
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
I'm面对其中,第一页有很好的表现(< 1秒)的情况,但是当我们从第二移动页面转发查询需要约5-6s。
- 任何人都可以解释我为什么是这种情况?
- 有没有什么办法轻微修改这个查询模板以获得更好的性能?
- 是否有任何完全不同的策略可以表现更好?
附加信息:
- 我用DB2 v9.7.400.501
- There's没有限制关键字
- 我无法创建视图或存储过程,由于客户约束
- 我不能创建任何额外的索引
- 试图从rownumber()no切换()但没有改变任何东西
欣赏答案Mustaccio。实际上,完全移除左连接使其表现非常快!但是,我不能像你所说的那样移动连接,因为在原始查询(编辑问题)中实际上有一个bbb.cde。 –
实际上,我管理它通过进一步修改查询来处理您的线路。然而,我只是不知道,如果我能够修改代码来生成这样的查询,但无论如何,这是一个非常好的提示。谢谢 –
是的,我做了你编辑的建议,但: 1)这将是一个代价高昂的修改重新生成这些查询 2)如果我需要按bbb.coly排序,那么我仍然需要在rownumber()查询里面的东西(好吧,我没有提到排序功能,但会编辑问题) –