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

Hxj.Data 分頁三大方法詳解:Top、From、Page 適用場景與產生 SQL 對比

     編輯:關於ASP.NET

三種分頁 API,同樣目的、不同語意

1. Top(int topCount) — 取前 N 筆

DbSession.Default.From().Top(10).ToList();

SQL Server / Access:SELECT TOP 10 * FROM [Products]
Oracle:SELECT * FROM (SELECT * FROM Products) WHERE ROWNUM <= 10

適用:首頁最新幾筆、排行榜 Top N、無需翻頁的固定筆數。

2. From(int startIndex, int endIndex) — 取區間筆數(含首尾)

DbSession.Default.From().From(3, 8).ToList(); // 第 3~8 筆

產生 SQL(SQL Server):

SELECT * FROM (
    SELECT TOP 6 * FROM (
        SELECT TOP 8 * FROM [Products] ORDER BY [ProductID] ASC
    ) AS tempIntable ORDER BY [ProductID] DESC
) AS tempOuttable ORDER BY [ProductID] ASC

原理:TOP endIndex → 反序 → TOP (endIndex-startIndex+1) → 再正序。
適用:精確控制區間、非標準分頁(如第 11~20 筆)。

3. Page(int pageSize, int pageIndex) — 標準分頁(每頁 N 筆、第 M 頁)

DbSession.Default.From().Page(10, 2).ToList(); // 每頁 10 筆、第 2 頁

內部自動換算為 From((pageIndex-1)*pageSize + 1, pageIndex*pageSize)。
適用:一般列表分頁、GridView/ListView 數據源。

效能與可讀性比較

方法可讀性SQL 複雜度適用場景
Top★★★★★最簡單固定筆數、無翻頁
From★★★☆☆雙層巢狀 TOP特定區間、非標準分頁
Page★★★★★同 From標準分頁、UI 元件綁定

最佳實務建議

  • 永遠搭配 OrderBy 使用,否則分頁結果不穩定。
  • 大資料量(百萬筆以上)時,TOP 巢狀查詢效能下降,考慮 ROW_NUMBER() OVER (ORDER BY ...) 或 Keyset Pagination(游標分頁)。
  • Hxj.Data 會自動為無 OrderBy 的分頁加上主鍵排序,但明確指定更佳。

掌握三種分頁方法的差異,即可針對不同業務場景選擇最適合的 API,寫出語意清晰、效能優異的分頁查詢。

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