我的iPhone应用程序连接到我的PHP web服务从MySQL数据库中检索数据,一个请求可以返回500个结果。
实现分页和一次检索20个项的最佳方法是什么?
假设我从数据库中接收了前20个条目,我现在如何请求接下来的20个条目?
我的iPhone应用程序连接到我的PHP web服务从MySQL数据库中检索数据,一个请求可以返回500个结果。
实现分页和一次检索20个项的最佳方法是什么?
假设我从数据库中接收了前20个条目,我现在如何请求接下来的20个条目?
当前回答
你也可以
SELECT SQL_CALC_FOUND_ROWS * FROM tbl limit 0, 20
select语句的行数(没有限制)在同一个select语句中捕获,因此您不需要再次查询表大小。 使用SELECT FOUND_ROWS()获取行数;
其他回答
你也可以
SELECT SQL_CALC_FOUND_ROWS * FROM tbl limit 0, 20
select语句的行数(没有限制)在同一个select语句中捕获,因此您不需要再次查询表大小。 使用SELECT FOUND_ROWS()获取行数;
如果您希望在存储过程中执行此操作,可以尝试此操作
SELECT * FROM tbl limit 0, 20.
不幸的是,使用公式不起作用,所以你可以执行一个准备好的语句,或者只是给过程的开始和结束值。
为查询定义OFFSET。例如
Page 1-(记录01-10):offset = 0, limit=10;
第2页-(记录11-20)offset =10, limit =10;
并使用以下查询:
SELECT column FROM table LIMIT {someLimit} OFFSET {someOffset};
第2页示例:
SELECT column FROM table
LIMIT 10 OFFSET 10;
本教程展示了一种进行分页的好方法。 使用MySQL进行高效分页
简而言之,避免使用OFFSET或较大的LIMIT
有相关的文献:
优化了使用MySQL的分页,使计算行总数和分页之间的差异。 使用MySQL的高效分页,由雅虎公司在Percona性能会议2009。Percona MySQL团队还提供了一个Youtube视频:高效分页使用MySQL(视频),
主要问题发生在使用大偏移量时。它们避免将OFFSET与各种技术一起使用,从WHERE子句中的id范围选择,到某种缓存或预计算页面。
在Use the INDEX网站上有一些建议的解决方案,Luke:
“分页结果”。 “正确的分页方式”。