2010-03-21 20 views
0

我們認爲,如果沒有限制,將返回9000萬行和需要顯示該視圖的分頁數據集的報表應用程序。分頁DB2上的大量表格

我們正在使用NHibernate和最近發現,其尋呼機制是這樣的:

select * from (select rownumber() over() as rownum, 
    this_.COL1 as COL1_20_0_, 
    this_.COL2 as COL2_20_0_ 
    FROM SomeSchema.SomeView this_ 
    WHERE this_.COL1 = 'SomeValue') as tempresult 
where rownum between 10 and 20 

查詢帶來的DB服務器癱瘓。我認爲發生的事情是,嵌套查詢在選擇子集之前爲where子句所滿足的每行分配一個行號(第10 - 20行)。由於嵌套查詢將返回很多行,因此該機制效率不高。我在其他SQL平臺上看到了很多有效的技巧和竅門,但我正在努力尋找一個DB2解決方案。實際上an article on IBM's own site推薦了nhibernate採取的方法。

有沒有更好的方法?

回答

1

不幸的是,從我知道這是唯一的方法。不過,我認爲首先需要確定在查詢組件上花費的時間 - 使用可視化解釋或快照/事件監視工具。

+0

在這個問題上花了一段時間和谷歌鴿子小時,我得出了同樣的結論。 db2沒有高效的分頁機制。 – grenade 2010-04-07 01:48:50