【发布时间】:2011-05-27 12:27:14
【问题描述】:
我正在考虑重新设计我们网站的报告页面以提高速度,但我对如何实现分页持观望态度。我们的数据库很大,超过 1.5 亿条记录。我们的大多数报告都需要来自多达 5 到 10 个表的复杂数据,因此每个表可能有 5 或 6 个连接和一些内部选择。显然,它们不是快速查询。
要在数据库端实现分页,对于每个 Web 请求,我需要查询数据库中当前页面的行数(比如 10000 行中的 100 行),但我还必须再次查询数据库以获得总数可能的行数。结果,我基本上将整个查询运行了两次,因为获取记录总数的查询仍然需要执行所有连接和内部选择来确定总数。
运行一次查询,返回所有结果,将其缓存在会话中,并使用 Web 代码对其进行分页不是更好吗?我知道我最初要提取更多数据,但我只运行一次可能需要 30 到 60 秒而不是两次的查询。
这是一个技术通用问题,但如果它很重要,我使用的是 .net 4.0 和 Oracle 11g。
【问题讨论】:
标签: .net oracle pagination paging