2012-08-03 56 views
1

從數據庫中創建結果集「可分頁」涉及哪些原則或實現?網頁上的分頁如何工作?

如何在不存儲內存的情況下翻頁一百萬條記錄?當有100頁時,什麼允許從5跳到第50頁的頁碼?

我正在尋找關於如何完成分頁的僞代碼種類的解釋。

回答

1

基本前提是要記住以下幾點:

  1. 定義頁面大小即每頁(PAGE_SIZE
  2. 記錄數知道在設置記錄的總數。然後你可以計算出有多少頁面。 var numPages = totalNumRecords/PAGE_SIZE;
  3. 使用一個變量來跟蹤頁碼即Page = 1
  4. 執行一個簡單的跳躍/送算法如下圖所示,你具備所需頁面元素

Skip((page - 1)*PAGE_SIZE).Take(PAGE_SIZE);

那麼會發生什麼當您點擊結果數據源時,您將跳到您想要的記錄集並採取規定的數量。希望這是有道理的。

+0

啊。說得通。我想我的思維過程在哪裏,數據庫級別的「跳過並採取」有多高效,但我忽略了在問題中提及這一點。我想數據庫很聰明! – Zabba 2012-08-03 05:05:16

+0

這仍然可以使用基於集合的方法在數據庫中輕鬆完成。所以它仍然是高效的。你必須設置你的查詢來接收一個跳過並根據我提供的算法獲得值,然後使用'SQL'來獲得結果 – 2012-08-03 05:07:06

1

通常在下一個按鈕的URL中有一些內容可以修改呈現頁面的數據庫查詢。然後,呈現的頁面會在下一個URL中碰撞索引。

所以頁面一個可能是有限度20 SQL請求,第2頁也有LIMIT 20也抵消了20

所以基本上只有20個項目在該模型時加載,但該頁面還加載多少項目已被抵消如此肥胖並更改「下一頁」URL。

通常還會有一個函數,用於檢查相對於總項目數的位置,以便頁面知道它是否應顯示下一個鏈接。