我想循環訪問使用Perl從MySQL數據庫返回的記錄,但一次只能記錄10條記錄。原因是服務器組件每個請求只能處理10個項目。記錄集迭代
例如:
如果查詢返回的35條記錄,然後 我不得不在4個請求發送數據:
Request # # of Records -------- -------- 1 10 2 10 3 10 4 5
什麼是完成任務的最好方法是什麼?
我想循環訪問使用Perl從MySQL數據庫返回的記錄,但一次只能記錄10條記錄。原因是服務器組件每個請求只能處理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;
等其中限制後的第一個數字是偏移量,第二個數字是記錄數。
您當然首先需要對總數進行查詢,並計算出您需要運行選擇查詢來獲取所有結果的次數。
或者,在Perl中,您可以使用像DBIx :: Class這樣的ORM包,它可以通過一組結果處理分頁並自動爲您檢索它們。
第一頁:
SELECT *
FROM table1
ORDER BY
field
LIMIT 0, 10
數秒頁:
SELECT *
FROM table1
ORDER BY
field
LIMIT 10, 10
等
也許你可以更具體。我沒有看到任何Perl代碼的嘗試。 – 2009-04-22 16:40:10