テーブルのページ番号を作成しようとしていますが、行数を知る必要があります。
たとえば、私のクエリSELECT * FROM tbl
は 100 行です。
クエリを10rows
1 ページに制限する必要があります。
それを行うと、すべての行を数えることができません。
limit with mysql our php
処理速度に違いがあるかどうかを知りたいです。
何かアイデアがあれば教えてください。
LIMIT
MySQL で使用する必要があります。なんで?
*Because it will take you less time to fetch some amount of data and transmit it instead of getting everything.
*Because it will consume less memory.
*Because working with smaller arrays is generally faster.
私の場合は、MySQL でフィルタリングを実行できない場合にのみ、PHP をフィルターとして使用しました。
Joachim Isakssonがすでに投稿したように、私の答えを更新するだけです:
SQL_CALC_FOUND_ROWSはすべての行をカウントするのに役立つため、正しいページネーションを実行できます。
おそらく最良の方法は、FOUND_ROWS()
両方を使用して組み合わせることです。
SELECT SQL_CALC_FOUND_ROWS * FROM tbl LIMIT 10
...結果として最初の 10 行を取得します。その後、あなたはただ行うことができます。
SELECT FOUND_ROWS()
... を使用しなかった場合に得られる行の総数を取得しますLIMIT
。
100k行になるとどうなりますか? もちろん、行数は取得できますが、パフォーマンスが大幅に低下します (そしてメモリ使用量が大幅に増加します)。2 番目のクエリを使用して行数を取得し、mysql で行を制限するだけです
私はあなたの問題を理解しているので、解決策は次のようになるかもしれません:厳密にmysqlによる
ここで、slot_size はページに表示するレコードの数です。たとえば、10 start はページに応じて変化する値です。