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

时间:2020-03-06 14:29:25  来源:igfitidea点击:

我需要在网站上显示许多新闻页面。
获取所有结果后,我应该使用limit在db查询中进行分页还是在php脚本中进行分页?

解决方案

如果我们可以避免使用限制,则我们不想将大量数据从数据库传输到脚本引擎。

就个人而言,我将使用查询来执行此操作。显然,如果我们使用AJAX之类的话,这可能会改变,但是仅对查询做一个基本限制并输出结果是简单而有效的。

在SQL中使用限制!每次!

否则,我们将浪费大量不必要的数据,这将使脚本不必要地变慢,并随着表中数据量的增加而导致可伸缩性问题。

极限是你的朋友!

如果只想与支持此功能的DBMS一起工作,则不要在DBMS上工作。如果我们将来希望支持其他DBMS,则可以在这两者之间添加一个可以处理的层,具体取决于当前的DBMS。

我们可以使用一些现有的库来:

Pear :: Pager可以帮助输出,并将数据库流量限制为仅我们需要的内容,我们可以使用随附的示例中提供的包装器。

这是我刚刚在Google上搜索到的所有内容的教程...

除了使用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"相对)可让我们有效处理带有其他自然键(例如,按名称或者日期顺序按字母顺序排列。