2012-03-18 90 views
0
select top 1000 from table1. 

那我怎麼繼續接下來的1000和從表中去。有記錄計數跨越數百萬,我必須採取和處理信息在一個漫長的過程..所以,想用Cursor檢索1000和下1000.任何其他最好的方式?如何檢索前1000條記錄,然後再檢索1000條並繼續?

+4

沒有平臺中立的方式來做到這一點。你使用的是什麼RDBMS? – 2012-03-18 01:17:08

+0

和它的哪個版本? – 2012-03-18 01:20:11

+0

正在使用Nettezza,如果SQL服務器那麼..!? – user1066231 2012-03-18 01:20:22

回答

1

如果您使用SQL Server 2005或更高,那麼你可以使用ROW_NUMBER()函數:

Using ROW_NUMBER() to paginate your data with SQL Server 2005 and ASP.NET

但比利曾評論說,這不是一個普通的SQL函數。

遊標是這樣做的一個非常糟糕的方式,特別是如果你正在做斷開querys,例如,如果用戶通過結果分頁。

如果你使用的是老式的SQL Server 2005,然後,或者你正在尋找一個通用的方法,那麼常用的方法是通過選擇結果到具有標識索引臨時表,然後從該選擇表索引> = pagenumber * pageSize & &索引<(pagenumber * pageSize)+ pageSize

+0

如果你我使用的是Netezza,我所知道的是它支持較老的SQL語法標準,所以它可能無法訪問像row_number()這樣的函數,但是您可以創建臨時表。也就是說,如果您「再利用Netezza公司的平臺,它會建議你有數據*很多*在那裏,只爲分頁創建臨時表可能是相當不利的。 – 2012-03-18 01:33:49

+0

Netezza公司有ROW_NUMBER()分析功能。 – redcayuga 2012-04-26 23:49:42

+0

感謝澄清,很高興知道。 – 2012-04-26 23:59:23

相關問題