首頁
編程語言
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

返回 ASP.NET 2.0 數據教程目錄

如前教程所述,分頁可用兩種方法實現:

  1. 預設分頁 — 僅勾選資料 Web 控制項智慧標籤的 Enable Paging;但瀏覽頁面時雖僅見少量資料,ObjectDataSource 每次仍讀取所有資料
  2. 自訂分頁 — 僅從資料庫讀取用戶需瀏覽的資料部分,大幅提升效能;顯然需更多工作

預設分頁功能吸引人(勾選核取方塊即完成),但每次讀取所有資料,大量資料或高併發用戶下不適用。此時必須用自訂分頁達到更好效能。

自訂分頁重點:撰寫僅回傳所需資料的查詢。幸運的是 SQL Server 2005 提供新關鍵字撰寫讀取所需資料查詢。本教程學習在 GridView 中使用此關鍵字實現自訂分頁。自訂分頁介面與預設分頁相同,但翻頁效能差數個數量級。

注意: 自訂分頁效能提升取決於資料總量與資料庫負載。教程最後將用數據說明效能優勢。

第一步:理解自訂分頁流程

資料分頁時,頁面顯示資料取決於請求頁碼與每頁筆數。想像 81 筆產品分頁,每頁 10 筆。瀏覽第 1 頁需產品 1-10,第 2 頁需 11-20,以此類推。

三個相關變數決定讀取資料與分頁顯示:

  • Start Row Index — 頁面顯示資料第一列索引;由頁索引 × 每頁筆數 + 1 得出。例:每頁 10 筆,第 1 頁(索引 0)起始索引 = 0×10+1=1;第 2 頁(索引 1)= 1×10+1=11
  • Maximum Rows — 每頁顯示最大筆數。稱「maximum」因最後一頁可能少於頁面大小。例:81 筆每頁 10 筆,第 9 頁僅 1 筆。無頁面筆數超過 Maximum Rows
  • Total Record Count — 顯示資料總筆數。不影響頁面顯示何資料,但影響分頁。例:81 筆每頁 10 筆,共 9 頁

預設分頁中,Start Row Index 由頁索引與每頁筆數得出,Maximum Rows 即每頁筆數。無論呈現哪頁皆讀取所有資料,所有列索引已知,取得 Start Row Index 無價值。總筆數可透過 DataTable 筆數取得。

自訂分頁僅回傳從 Start Row Index 開始的 Maximum Rows 筆記錄。兩個關鍵點:

  1. 必須將整個分頁資料與行索引關聯,才能從指定 Start Row Index 回傳所需資料
  2. 需提供分頁資料總筆數

後兩步將撰寫相關 SQL,並在 DAL、BLL 完成對應方法。

第二步:回傳需分頁記錄總筆數

學習回傳顯示頁面所需資料前,先看如何取得總筆數(配置介面需用到)。使用 SQL COUNT 聚合函數。例:回傳 Products 表總筆數:

SELECT COUNT(*) FROM Products
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved