在处理分页结果时,跟踪项目总数的理想方式是什么?跟踪一系列分页结果中的项目总数
起初这看起来像一个简单的问题,但当我真正开始考虑如何有效地做到这一点时,它稍微复杂一点(对我来说......现在只是保释,如果你觉得这太愚蠢了)。
我需要从数据库中获取项目的数量。这很简单。然后,我可以将此计数存储在某个变量中(例如$ _SESSION变量)。我可以检查这个变量是否设置,如果不是,请重新计数。技巧部分是确定什么是确定何时需要重新计数的最佳方法。似乎我需要得到一个新的计数,如果我已经添加/删除项目的总数,或者如果我正在重新加载或重新访问网格。
那么,我将如何决定何时清除这个$ _SESSION变量?我可以看到清除它并在更新/删除(甚至为了避免潜在的昂贵的数据库命中而添加或减去它)之后获得新计数,但是(这里出现了我觉得棘手的部分)当某个人离开页面时,怎么办?或者在进入结果的下一页之前等待可变的时间或重新加载页面?
由于我们可能正在处理数十或数十万个结果,因此从数据库中计算它们可能会非常昂贵(对吗?或者我的假设是错误的?)。因为我需要总数来处理分页结果中的页面总数......处理这种情况的最有效方式是什么,并且只要可能需要,就可以坚持这种方式?
BTW,我会得到的计数与一个SQL查询,如:
SELECT COUNT(id) FROM foo;
在这么多的结果,你可能只是想使用一个四舍五入的数字,并说约22K的结果或类似的东西。 – dqhendricks 2011-01-05 22:18:23