首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 在 SQL Server 2005 實現高效自訂分頁(ROW_NUMBER)

     編輯:關於ASP.NET

預設分頁每次回發皆全表掃描,大數據量下效能災難。SQL Server 2005 引入 ROW_NUMBER() 窗口函數,輕鬆實現真正的自訂分頁:僅回傳當頁資料。

預設 vs 自訂分頁對比

  • 預設分頁:SqlDataSource 每頁載入全表,GridView 切片顯示。百筆資料無感,百萬筆必死。
  • 自訂分頁:開發者自行撰寫分頁查詢,GridView 僅負責顯示。ObjectDataSource 預設亦用預設分頁,但可配置 SelectCountMethod、StartRowIndexParameterName、MaximumRowsParameterName 啟用自訂分頁。

ROW_NUMBER() 分頁查詢範本

WITH PagedData AS (
    SELECT ROW_NUMBER() OVER (ORDER BY OrderDate DESC) AS RowNum, *
    FROM Orders
)
SELECT * FROM PagedData
WHERE RowNum BETWEEN @startRowIndex AND @startRowIndex + @maximumRows - 1
ORDER BY RowNum;

啟用 SqlDataSource 快取的補充

設定 EnableCaching="true" 可減少資料庫往返,但首次仍需全表載入,且面臨過期資料問題。實測:自訂分頁速度仍優於快取模式 2 倍以上。

ObjectDataSource 自訂分頁配置

<asp:ObjectDataSource SelectMethod="GetOrdersPage" SelectCountMethod="GetOrdersCount"
    StartRowIndexParameterName="startRowIndex" MaximumRowsParameterName="maxRows" ... />

中介層方法簽章:GetOrdersPage(int startRowIndex, int maxRows)、GetOrdersCount()。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved