2012-08-03 31 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。

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