我需要在网站上显示多页新闻 我应该使用限制在db查询中进行分页,还是在获得所有结果后在我的php脚本中进行分页?
答案 0 :(得分:10)
使用限制 - 如果可以避免,则不希望将大量数据从数据库传输到脚本引擎。
答案 1 :(得分:10)
在SQL中使用限制!每一次!
否则,您丢失的数据远远超出您的需要,这会使您的脚本不必要地变慢,并且随着表中数据量的增加而导致可伸缩性问题。
限制是你的朋友!
答案 2 :(得分:2)
如果您只想使用支持此功能的DBMS,请在DBMS上执行此操作。如果您希望将来支持其他DBMS,则可以根据当前的DBMS添加一个可以处理的层。
答案 3 :(得分:2)
您可以使用一些现有的库来帮助您:
Pear :: Pager可以帮助输出,并且只将数据库流量限制为您需要的内容,您可以使用随附的示例中提供的包装器。
这是一个tutorial我只是用Google搜索了所有内容......
答案 4 :(得分:1)
除了使用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
),可以有效地处理使用其他自然键的记录分页,例如按名称或按日期顺序按字母顺序排列。
答案 5 :(得分:0)
就个人而言,我会使用查询来完成它。显然,如果你处理AJAX等,这可能会改变,但只是在查询中做一个基本限制并输出结果是简单而有效的。