建议有效的分页教程?

时间:2009-09-09 05:59:59

标签: php mysql pagination

我从mysql中循环数据,这是一个很长的列表。分页的最有效方法是什么?目前,我正在研究这个问题:http://www.evolt.org/node/19340

随意推荐一个更好的,谢谢!

5 个答案:

答案 0 :(得分:2)

不是像文章中那样从数据库中提取所有内容,而是可以选择实际显示的行 - 即。如果每页有10个项目,只需选择10 - 然后选择总行数。如果数据库很大,即使它是两个查询,这也会更有效。

答案 1 :(得分:1)

像Sorin Mocanu所说的那样,如果你想按照某些标准订购结果,可能是修改时间或某些频率,那么排序将是一个很大的性能损失。即使您只需要10条记录,您仍然需要对所有(可能是数百万条)记录进行排序,除非您确保使用索引并正确使用。

这是一篇关于与mysql分页的优秀文章: http://www.percona.com/ppc2009/PPC2009_mysql_pagination.pdf

或者从mysql网站: http://dev.mysql.com/doc/refman/5.5/en/order-by-optimization.html

答案 2 :(得分:0)

我一直在使用Wicked Cool PHP这本书中的例子作为我的起点。非常整洁,很好地解释了IMO。

答案 3 :(得分:0)

你想要像

这样的东西
SELECT * FROM your_table WHERE condition = true ORDER BY some_field LIMIT 100, 10

其中100是要跳过的记录数,10是要检索的行数。 如果您希望获得最高性能,请确保您有一个涵盖condition的索引和订单条件字段。

答案 4 :(得分:0)

这是一个非常好的函数/类,作为标准库的一部分。我强烈建议你按照这些方针自己动手:

  • 查询计算总项目(行)。
  • 编制上层和下层的代码根据您希望每页显示的项目数量的下限。
  • 第二次查询LIMIT'ed相应。

我会发布一些代码,但这会带来乐趣:)