从数据库中创建结果集“可分页”涉及哪些原则或实现?网页上的分页如何工作?
如何在不存储内存的情况下翻页一百万条记录?当有100页时,什么允许从5跳到第50页的页码?
我正在寻找关于如何完成分页的伪代码种类的解释。
从数据库中创建结果集“可分页”涉及哪些原则或实现?网页上的分页如何工作?
如何在不存储内存的情况下翻页一百万条记录?当有100页时,什么允许从5跳到第50页的页码?
我正在寻找关于如何完成分页的伪代码种类的解释。
基本前提是要记住以下几点:
PAGE_SIZE
)var numPages = totalNumRecords/PAGE_SIZE;
Page = 1
Skip((page - 1)*PAGE_SIZE).Take(PAGE_SIZE);
那么会发生什么当您点击结果数据源时,您将跳到您想要的记录集并采取规定的数量。希望这是有道理的。
通常在下一个按钮的URL中有一些内容可以修改呈现页面的数据库查询。然后,呈现的页面会在下一个URL中碰撞索引。
所以页面一个可能是有限度20 SQL请求,第2页也有LIMIT 20也抵消了20
所以基本上只有20个项目在该模型时加载,但该页面还加载多少项目已被抵消如此肥胖并更改“下一页”URL。
通常还会有一个函数,用于检查相对于总项目数的位置,以便页面知道它是否应显示下一个链接。
啊。说得通。我想我的思维过程在哪里,数据库级别的“跳过并采取”有多高效,但我忽略了在问题中提及这一点。我想数据库很聪明! – Zabba 2012-08-03 05:05:16
这仍然可以使用基于集合的方法在数据库中轻松完成。所以它仍然是高效的。你必须设置你的查询来接收一个跳过并根据我提供的算法获得值,然后使用'SQL'来获得结果 – 2012-08-03 05:07:06