2009-09-30 26 views
1

我有一個返回30行的查詢。我正在編寫代碼,通過AJAX調用將這30行分頁爲每頁5條記錄。從數據庫中選擇x和y之間的行

  1. 是否有任何理由將這5條記錄返回到表示層?無論是在速度方面還是在收益方面都有好處?

  2. 如果是這樣,我該如何在Sybase中真正做到這一點?我知道甲骨文有Rownum和MS Sql有類似的東西,但我似乎無法在Sybase中找到類似的功能。

回答

3

除非您的記錄長度很大,否則5行和30行之間的差異對用戶而言應該是完全不明顯的。實際上,多個數據庫調用會對性能造成的損害遠不止於幫助。只要將所有30行都返回到您的中間層或您的演示文稿,無論什麼更有意義。

0

我從來沒有與Sybase合作,但在這裏,說明如何做同樣的事情鏈接:由於該解決方案包括

http://www.dbforums.com/sybase/1616373-sybases-rownum-function.html

一個臨時表,你也可以用它來進行分頁。在您的初始查詢中,將30行放入臨時表中,併爲頁碼添加一列(前五行將是第1頁,接下來的五頁第2頁等等)。在後續的頁面請求中,按頁碼查詢臨時表。

不知道你如何去清理臨時表,但。也許當用戶的會話超時?

對於30條記錄,它可能甚至不值得打擾分頁。

0

我想在Sybase可以使用

select top 5 * from table 
where order-by-field > (last record of previous calls order-by-field) 
order by order-by-field 

只是確保你每次都通過使用相同的順序。

至於好處我想這取決於有多少行,我們正在討論如何大表是等

0

我jmgant完全一致,但是,如果您無論如何要做到這一點,處理進入東西像這樣:

  1. 選擇前5項和存儲Y中選擇排名前10位的項目,並存儲在X
  2. XY

整個過程可能發生在1個SQL語句中。

相關問題