题
我想通过从使用Perl MySQL数据库返回的记录重复,但每次只有十个记录。其原因是,服务器组件只能处理每个请求10个项目。
例如:
如果查询返回的35条记录,然后 我必须在4个请求发送数据:
Request # # of Records -------- -------- 1 10 2 10 3 10 4 5
什么是完成任务的最好方法是什么?
解决方案
可以调整查询来选择10行:
select *
from yourtable
order by idcolumn
limit 10;
当通过行迭代,存储处理该行的ID。您已处理10行后,取出下一个10:
select *
from yourtable
where idcolumn > stored_id
order by idcolumn
limit 10;
继续上次查询直到它返回小于10行。
其他提示
看MySQL的LIMIT子句。你可以像查询:
SELECT * from some_table LIMIT 0, 10;
SELECT * from some_table LIMIT 10, 10;
等。其中LIMIT之后的第一个数字是偏移量,而第二个数字是记录的数量。
你当然首先需要总数量做一个查询,找出你需要多少时间来运行你的选择查询来获取所有结果。
可替换地,在Perl可以使用ORM包等DBIx ::类可以通过套结果和处理分页自动检索它们。
有关第一页:
SELECT *
FROM table1
ORDER BY
field
LIMIT 0, 10
有关秒页:
SELECT *
FROM table1
ORDER BY
field
LIMIT 10, 10
等
不隶属于 StackOverflow