1

从数据库“可分页”生成结果集涉及哪些原则或实现?

如何在不将其存储在内存中的情况下对超过一百万条记录进行分页?当有 100 页时,什么允许从 5 到第 50 页码“跳转”?

我正在寻找一种关于如何完成分页的伪代码解释。

4

2 回答 2

2

通常在 Next 按钮的 URL 中有一些东西可以修改呈现页面的数据库查询。然后,呈现的页面会碰撞下一个 URL 中的索引。

所以第一页可能是一个有 LIMIT 20 的 SQL 请求,第 2 页也有 LIMIT 20 但也有 OFFSET 20。

因此,在该模型中,基本上一次只加载 20 个项目,但该页面还会加载多少项目已被偏移如此胖,并更改“下一页”URL。

通常还会有一个函数检查您相对于总项目数的位置,以便页面知道它是否应该显示下一个链接。

于 2012-08-03T04:54:35.333 回答
1

基本前提是记住以下几点:

  1. 定义您的页面大小,即每页的记录数 ( PAGE_SIZE)
  2. 知道集合中的记录总数。然后你可以计算有多少页。var numPages = totalNumRecords / PAGE_SIZE;
  3. 使用变量来跟踪页码,即Page = 1
  4. 执行如下所示的简单 Skip/Take 算法,您就拥有了分页所需的元素

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

因此,当您点击数据源获取结果时会发生什么,您将跳到您想要的记录集并获取规定的数量。希望这是有道理的。

于 2012-08-03T04:59:40.570 回答