.net - 分页选择,在数据库上或在 web 应用程序中

标签 .net oracle pagination paging

我正在考虑重新设计我们网站的报告页面以使其更快,但我对应该如何实现分页犹豫不决。我们的数据库很大,超过 1.5 亿条记录。我们的大多数报告都需要来自多达 5 到 10 个表的复杂数据,因此每个表可能有 5 或 6 个连接和一些内部选择。显然,它们不是快速查询。

要在数据库端实现分页,对于每个网络请求,我需要查询数据库以获取当前页面的行(比如 10,000 行中的 100 行),但我还必须再次查询数据库以获得总数可能的行。结果,我基本上运行了整个查询两次,因为获取记录总数的查询仍然需要执行所有连接和内部选择以确定总数。

运行一次查询、返回所有结果、将其缓存在 session 中并使用 Web 代码对其进行分页不是更好吗?我知道我最初会提取更多数据,但我只运行一次可能需要 30 到 60 秒的查询,而不是两次。

这是一个技术一般性问题,但如果它很重要,我使用的是 .net 4.0 和 Oracle 11g。

最佳答案

根据我的经验,如果留给数据库,分页总是更快。毕竟建立数据库是为了查询和操作海量数据。

如果您在 .NET 中返回大量数据并将其“缓存”在 session 中,您将很快耗尽服务器的内存。

关于.net - 分页选择,在数据库上或在 web 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6152227/

相关文章:

django - 来自查询集/通用 View 的下一个先前链接

分页结果上的 REST 状态代码 204

asp.net - Oracle序列缓存老化太频繁

java - Hibernate 和 Oracle10g : Tomcat times out

c# - 开发和测试将驻留在 GAC 中的 SDK 的策略

c# - 如何为unicode字符串的存储过程中的参数添加前缀 'N'

sql - SQL迁移数据时使用 "WITH AS"关键字

c# - 分页逻辑 : Inserting . .. 当有很多页面时而不是中间页面

c# - 通过单选按钮更改网络服务调用以测试或生产

.net - Windows Azure 和 Web API 部署