情况如下:
我需要在页面上显示记录列表,并且需要分页。我得到的问题是,是否应该显示记录取决于从数据库中选择后在内存中计算的验证结果。
例如,,一页50条记录:
解决方案我现在从数据库获取所有记录,进行验证,然后获取有效的记录列表。分页基于此列表。
还有其他好的解决方案吗?
答案 0 :(得分:1)
在最佳情况下,分页可分为两个步骤。在根据选择查询的第一步中,从数据库中选择一组行。可以显示所有这些行。而不是获取实际行只是检索其标识符列表。这个列表虽然很大,但通常可以保存在内存中。第二步是通过询问n
页m
项来查看列表。然后,只使用其ID从数据库中完全检索m
行。
计算的附加步骤是否定了具有整个结果集的标识符列表的分页思想。
在没有看到计算的情况下,我现在可以想到的是,无论何时在db中插入/更新显示行,都将计算结果存储在数据库中。由于计算结果取决于输入参数,因此对于每一行和每个输入参数范围,您可能会得到不同的结果。
这将使分页成为可能。执行分页的第一步现在应包括预先计算的验证结果,并提供更快的行ID列表检索。