分页/粗略估计总行数的最有效方法

Jon*_*hon 0 php mysql pagination pdo

我有一个非常常见的问题,但似乎无法找到一个好的答案。

我需要从表中获取一页的行数,以及足够的信息来对这些数据进行分页。所以总的来说,我需要对总行数进行非常粗略的估计(通常我需要知道的是ceil(count()/50))。

所以count()真的是矫枉过正。而且我已经有一个SELECT * FROM table LIMIT 0, 50运行,所以如果它可以附加到这个命令就更好了。

我听说过SQL_CALC_FOUND_ROWS。但我也听说它并不比count自己做特别有效率。“不幸的是,使用 SQL_CALC_FOUND_ROWS 会带来破坏可能发生的任何 LIMIT 优化的恶劣后果”。

所以,总而言之,我有点认为使用 MySQL 的行估计是要走的路。但我不知道该怎么做。或者这个估计会有多低。

注意1:在我的情况下,我使用的大多数表每天只更新几次,而不是一直更新。注 2:我在 php 中使用 PDO。

bit*_*ing 5

我发现的另一个有趣的想法:

更好的设计是将寻呼机转换为“下一个”链接。假设每页有 20 个结果,那么查询应该使用 21 行的 LIMIT 并仅显示 20。如果结果中存在第 21 行,则存在下一页,您可以呈现“下一个”链接。

如果您不需要表的总数,它确实是最快的解决方案。