質問

私は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

など。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top