0

テーブルのページ番号を作成しようとしていますが、行数を知る必要があります。

たとえば、私のクエリSELECT * FROM tblは 100 行です。

クエリを10rows1 ページに制限する必要があります。

それを行うと、すべての行を数えることができません。

limit with mysql our php処理速度に違いがあるかどうかを知りたいです。

何かアイデアがあれば教えてください。

4

4 に答える 4

3

LIMITMySQL で使用する必要があります。なんで?

*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はすべての行をカウントするのに役立つため、正しいページネーションを実行できます。

于 2013-05-09T20:12:21.383 に答える
2

おそらく最良の方法は、FOUND_ROWS()両方を使用して組み合わせることです。

SELECT SQL_CALC_FOUND_ROWS * FROM tbl LIMIT 10

...結果として最初の 10 行を取得します。その後、あなたはただ行うことができます。

SELECT FOUND_ROWS()

... を使用しなかった場合に得られる行の総数を取得しますLIMIT

于 2013-05-09T20:19:31.653 に答える
0

100k行になるとどうなりますか? もちろん、行数は取得できますが、パフォーマンスが大幅に低下します (そしてメモリ使用量が大幅に増加します)。2 番目のクエリを使用して行数を取得し、mysql で行を制限するだけです

于 2013-05-09T20:11:32.873 に答える
0

私はあなたの問題を理解しているので、解決策は次のようになるかもしれません:厳密にmysqlによる

  • 合計レコードをカウントするために最初に 2 つの関数を使用する
  • 結果を取得するための秒
  • table_name からの合計として count(1) を選択します
  • col1,col2.. を table_name limit $start, $slot_size から選択

ここで、slot_size はページに表示するレコードの数です。たとえば、10 start はページに応じて変化する値です。

于 2013-05-09T20:17:07.683 に答える