2009-04-22 13 views
0

Perlを使用してMySQLデータベースから返されたレコードは繰り返し処理しますが、一度に10レコードしか処理しません。理由は、サーバーコンポーネントが要求ごとに10個のアイテムしか処理できないためです。例えばレコードセットの反復

クエリが その後、35件のレコードを返された場合、私は4つの要求でデータを送信する必要があります:タスクを達成するための最良の方法は何

 
Request #   # of Records 
--------    -------- 
    1     10 
    2     10 
    3     10 
    4      5 

+0

おそらくもっと具体的なものかもしれません。私はPerlコードでの試みは見ません。 –

答えて

3

:秒のページについては

SELECT * 
FROM table1 
ORDER BY 
     field 
LIMIT 0, 10 

行を反復し、処理する行のID。 10行を処理した後、次の10行を取得します。

select * 
from yourtable 
where idcolumn > stored_id 
order by idcolumn 
limit 10; 

最後のクエリが10行未満になるまで続行します。

5

MySQLのLIMIT節を見てください。 LIMITの後の最初の数がオフセット、及び第二の数はレコードの数ですさなど

SELECT * from some_table LIMIT 0, 10; 
SELECT * from some_table LIMIT 10, 10; 

:あなたのようなクエリを持つことができます。

まず、合計数のクエリを実行し、すべての結果を取得するために選択クエリを実行する必要がある回数を把握する必要があります。

また、PerlではDBIx :: ClassのようなORMパッケージを使用することができます。これは、結果の集合をページ分割して自動検索することができます。

最初のページについては
0

select * 
from yourtable 
order by idcolumn 
limit 10; 

:あなたは10行を選択するためのクエリを調整することができます

SELECT * 
FROM table1 
ORDER BY 
     field 
LIMIT 10, 10 

など