【发布时间】:2010-09-15 16:53:32
【问题描述】:
情况如下:
我需要在页面上显示记录列表,并且需要分页。我得到的问题是是否应该显示记录取决于从数据库中选择后在内存中计算的验证结果。
例如,一页有 50 条记录:
- 从数据库中选择 50 条记录
- 验证后留下30条记录
解决方案我现在从数据库中获取所有记录,进行验证,然后获取有效的记录列表。分页基于此列表。
还有其他好的解决方案吗?
【问题讨论】:
标签: pagination paging
情况如下:
我需要在页面上显示记录列表,并且需要分页。我得到的问题是是否应该显示记录取决于从数据库中选择后在内存中计算的验证结果。
例如,一页有 50 条记录:
解决方案我现在从数据库中获取所有记录,进行验证,然后获取有效的记录列表。分页基于此列表。
还有其他好的解决方案吗?
【问题讨论】:
标签: pagination paging
在最佳情况下,分页可以分为两个步骤。在根据选择查询的第一步中,从数据库中选择一组行。所有这些行都可以显示。无需获取实际行,只需检索其标识符列表即可。这个列表无论多么大,通常都可以保存在内存中。第二步是通过询问n-th 页的m 项目来翻阅列表。然后只有 m 行会使用它们的 ID 从数据库中完全检索到。
计算的额外步骤否定了具有整个结果集标识符列表的分页的想法。
我现在在没有看到计算的情况下能想到的是,每当在数据库中插入/更新显示行时,将计算结果存储在数据库中。由于计算结果取决于输入参数,因此对于每一行和每个输入参数范围,您可能会得到不同的结果。
这将使分页成为可能。执行分页的第一步现在应该包括预先计算的验证结果,并提供更快的行 ID 列表检索。
【讨论】: