我正在考虑重新设计我们网站的报告页面以使其更快,但我对应该如何实现分页犹豫不决。我们的数据库很大,超过 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/