質問
私は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;
など。 LIMITの後の最初の数がオフセットされ、そして第二の数はレコードの数である。
あなたはもちろんのだろう最初の合計数のクエリを行うと、あなたはすべての結果を得るためにあなたの選択クエリを実行する必要がありますどのように多くの時間を把握する必要があります。
また、Perlであなたが結果とのセットを通じて改ページを扱うことができるDBIx ::クラスのようなORMパッケージを使用することができますあなたのためにそれらを自動取出ます。
最初のページの場合:
SELECT *
FROM table1
ORDER BY
field
LIMIT 0, 10
秒ページの場合:
SELECT *
FROM table1
ORDER BY
field
LIMIT 10, 10
など。
所属していません StackOverflow