我希望我不会写一份副本,但我找不到任何能回答我问题的内容.(虽然在我看来这是很常见的问题.)
几乎每个Web项目都会出现此问题:您有一个包含许多条目的表,并希望它们显示在单个页面上.
现在我想知道计算某组表行所需页数的最佳方法是什么.
这里有一些我一直在考虑的方法.我想对它们的效果有所回应.我将给出特定于PHP的示例,但我敢打赌其他语言中也有类似的技术.
最好的方法是静态保存页数,并在每次添加新条目时修改值.(尽管如此......我正在寻找一个动态的解决方案:-))
做一个SELECT COUNT(*)
在感兴趣的行和每次显示页面时计算的页码.
执行普通选择以获取所有行的结果集.现在不要通过调用来加载行mysql_fetch_row
,但是要获取行数mysql_num_rows
.(因为我不知道这是如何实现的,我不知道它是否有效.任何人都知道吗?)然后我可以舒服地移动结果集指针.(因为mysqli
有mysql_data_seek
,但本机MySQL扩展没有类似的功能.因此我假设这只是一些缓冲行为mysqli
)
任何人都可以说如何最有效地计算行数(页数)?
2号是最常见的模式
select count(*) from [Table] where [Expressions]
然后
select [Columns] from [Table] where [Expressions] limit [Pagesize] offset [Pagenum*Pagesize-Pagesize]
这将为您提供整个结果集的总行数,但仅提供当前页面的行数据.
许多框架或CMS都有会议用于在会话中缓存此数据的某些部分,您可能会或可能不想这样做,具体取决于您预期的表大小,数据的波动性等.