【发布时间】:2013-01-07 23:57:46
【问题描述】:
我有一个包含超过 10k 个结果的数组(由 MySQL 查询生成),我想知道对它进行分页的最佳做法是什么?先提取所有数据,然后将其拆分为页面,还是有另一种更快/最好的方法?
【问题讨论】:
-
您可以结合 MySQL 的
limit和offset方法来执行此操作。
标签: php mysql pagination
我有一个包含超过 10k 个结果的数组(由 MySQL 查询生成),我想知道对它进行分页的最佳做法是什么?先提取所有数据,然后将其拆分为页面,还是有另一种更快/最好的方法?
【问题讨论】:
limit 和 offset 方法来执行此操作。
标签: php mysql pagination
使用 MySQL 的 LIMIT 语法仅在数据库到达您的 PHP 代码之前从数据库中检索所需的结果。
类似这样的:
$offset = 0;
$per_page = 25;
$query = "SELECT * FROM `blah` LIMIT $offset, $per_page";
...
【讨论】:
按照建议,您可以使用LIMIT。要找出结果总数,您可以选择执行以下操作:
SELECT SQL_CALC_FOUND_ROWS * FROM `table` ... LIMIT 0, 20
然后:
SELECT FOUND_ROWS() AS `total_results`
检索分页器的最大页码。
【讨论】:
要显示这么多记录的分页导航链接,请考虑使用“对数”页面导航。见这里:
How to do page navigation for many, many pages? Logarithmic page navigation
【讨论】:
您可能需要在提取内容之前执行 COUNT() 查询以确定总共有多少行。找出你需要多少页的一般算法是
ceil(totalRows / rowsPerPage)
【讨论】: