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()查詢裏面的東西(好吧,我沒有提到排序功能,但會編輯問題) –