在php中分页结果的最佳方法是什么

在php中分页结果的最佳方法是什么,php,pagination,Php,Pagination,我需要在一个网站上显示多页新闻。我应该在数据库查询中使用LIMIT还是在获得所有结果后使用PHP脚本进行分页?使用LIMIT-如果可以避免的话,您不想将大量数据从数据库传输到脚本引擎。我个人会使用查询来完成。显然,如果您使用AJAX之类的工具,这种情况可能会改变,但在查询中执行基本限制并输出结果是简单而高效的。在SQL中使用限制!每一次 否则,您会浪费比需要多得多的数据,这会使脚本速度不必要地慢,并且随着表中数据量的增加,会导致可伸缩性问题 极限是你的朋友 如果您只想与支持此功能的DBMS一起工

我需要在一个网站上显示多页新闻。我应该在数据库查询中使用
LIMIT
还是在获得所有结果后使用PHP脚本进行分页?

使用LIMIT-如果可以避免的话,您不想将大量数据从数据库传输到脚本引擎。

我个人会使用查询来完成。显然,如果您使用AJAX之类的工具,这种情况可能会改变,但在查询中执行基本限制并输出结果是简单而高效的。

在SQL中使用限制!每一次

否则,您会浪费比需要多得多的数据,这会使脚本速度不必要地慢,并且随着表中数据量的增加,会导致可伸缩性问题


极限是你的朋友

如果您只想与支持此功能的DBMS一起工作,请不要在DBMS上工作。如果您希望将来支持其他DBMS,则在它们之间添加一个层,该层可以根据当前DBMS进行处理。

您可以使用一些现有库来帮助您:

Pear::可以帮助输出,并且为了将数据库通信量限制在您需要的范围内,您可以使用随附示例中提供的包装器


这里有一个我刚在谷歌上搜索过的东西,它拥有一切…

除了使用
LIMIT
,我建议使用一个显式的
WHERE
子句来设置偏移量,并对该列的结果进行排序。例如:

--- First page (showing first 50 records)
SELECT * FROM people ORDER BY id LIMIT 50
--- Second page
SELECT * FROM people WHERE id > 50 ORDER BY id LIMIT 50
这进一步限制了返回到所需范围内的行数。使用
WHERE
方法(与带有单独偏移量的
LIMIT
子句相反,例如
LIMIT 50,50
)可以有效地处理使用其他自然键(例如按名称字母顺序或日期顺序)的记录分页