![](/img/trans.png)
[英]What is the best way to get MySQL query results as an array in PHP?
[英]What is the best way to paginate results in php
我需要在一个站点中显示多页新闻。 在获得所有结果后,我应该使用LIMIT
还是使用 PHP 脚本在数据库查询中进行分页?
使用限制 - 如果可以避免,您不希望将大量数据从数据库传输到脚本引擎。
在 SQL 中使用限制! 每次!
否则,您会抛出比您需要的多得多的数据,这会使您的脚本不必要地变慢,并且随着表中数据量的增加会导致可伸缩性问题。
极限是你的朋友!
如果您只想使用支持此功能的 DBMS,而不是在 DBMS 上进行。 如果你想在未来支持其他 DBMS,那么在它之间添加一个层,可以根据当前的 DBMS 进行处理。
除了使用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
)允许您有效地处理具有其他自然键的记录的分页,例如按名称的字母顺序或按日期顺序。
就个人而言,我会使用查询来做到这一点。 显然,如果您处理 AJAX 等,情况可能会发生变化,但仅在查询中进行基本限制并输出结果是简单而有效的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.