我需要使用數據庫端分頁,就像表中有10000條記錄那麼我必須首先填充100條記錄,然後再記錄100條記錄。我正在使用SQL Server 2005請爲此提供存儲過程代碼。數據庫端分頁
Q
數據庫端分頁
1
A
回答
2
你應該看看,因爲SQL Server中的ROW_NUMBER()功能2005
它已被證明是最有效的方式(對我來說)做服務器端分頁。
例子:
SELECT *
FROM (
SELECT col1, col2, col3,
ROW_NUMBER() OVER(ORDER BY col1 ASC) AS rownbr
FROM table
WHERE col2 = 'something'
) AS Query
WHERE rownbr BETWEEN 1 AND 10
ORDER BY rownbr
您可以設置要在OVER()語句,以便通過列,要在外部檢索WHERE語句的第一個和最後一排。
1
如果你實際上是在嘗試,你有頁碼頁面,那麼你可以做類似如下:
Create Procedure GetPagedStuff(@PageNumber int, @PageSize int)
As
;With RankedRows As
(
Select ...
, Row_Number() Over (Order By SomeColumn) As Num
, Count(NonNullColumn) Over() As TotalRows
From MyTable
)
Select ...
From RankedRows
Where Num > (@PageNumber - 1) * @PageSize
And Num <= @PageNumber * @PageSize
Return
-- example call
Exec GetPagedStuff @PageNumber = 1, @PageSize = 100
1
正如Jason和托馬斯,ROW_NUMBER()函數是你最好的選擇建議。但是,如果滿足WHERE子句的記錄數量非常高,則可能需要檢索主鍵,然後再次使用同一個表加入子集以獲取其他列。
例如:
SELECT e.col1, e.col2, e.col3
FROM Table1 e
JOIN
(SELECT ID, rownum= ROW_NUMBER()
FROM Table1
WHERE col1 = @filterParam
ORDER BY LastName)
f ON f.ID = e.ID
WHERE f.rownum BETWEEN 100 AND 150
2
DECLARE @PageSize INT,
@PageNumber INT,
@FirstRow INT,
@LastRow INT
SELECT @PageSize = 20,
@PageNumber = 1
SELECT @FirstRow = (@PageNumber - 1) * @PageSize + 1,
@LastRow = (@PageNumber - 1) * @PageSize + @PageSize ;
WITH Members AS
(
SELECT Col1,Col2,Col3,
ROW_NUMBER() OVER (ORDER BY Col1 DESC) AS RowNumber
FROM Table
)
SELECT Col1,Col2,..,..,..,
FROM Members
WHERE RowNumber BETWEEN @FirstRow AND @LastRow
ORDER BY Col1 ASC;
+2
參閱HTTP覆蓋井:// www.sqlteam.com/article/server-side-paging-using-sql-server-2005 – Sutirth 2012-03-12 22:05:24
相關問題
- 1. 數據庫分頁設計
- 2. 數據庫:SQL分頁?
- 3. 數據庫文章:分頁
- 4. 數據庫:SQL分頁 - 多少頁?
- 5. jqgrid:如何做indexeddb分頁(客戶端數據庫)
- 6. 服務器端分頁jQuery數據表
- 7. 數據表與AngularJS客戶端分頁
- 8. 客戶端數據表分頁
- 9. 帶後端分頁的jQuery數據表
- 10. 如何在客戶端爲數據庫中的數據顯示設置分頁?
- 11. MongoDB數據庫分頁PHP語言
- 12. 分頁結果從2個數據庫
- 13. PHP分頁數據庫信息
- 14. 分頁數據庫查詢困境
- 15. 在SQL Server數據庫上分頁
- 16. oracle數據庫分頁結果集
- 17. 錯誤分頁如果數據庫
- 18. 用ajax(jquery)分頁 - 大數據庫
- 19. 分頁和存儲到數據庫
- 20. opencart分頁沒有數據庫
- 21. 實現與數據庫的gridview分頁
- 22. Firebase數據庫分頁升序
- 23. 沒有數據庫的分頁
- 24. 分頁畫廊比索(無數據庫)
- 25. 分頁和數據庫錯誤的CakePHP
- 26. 分頁web2py沒有數據庫
- 27. 添加分頁從數據庫
- 28. 數據源不支持服務器端數據分頁
- 29. 數據源不支持服務器端數據分頁。
- 30. 數據源不支持服務器端數據分頁。 gridview
需要(免費)登記但在這種兩部分的系列http://www.sqlservercentral.com/articles/paging/69892/ – 2011-03-20 22:56:38