我想通过从使用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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top