[解決済み] MySQLのページネーションはダブルクエリなしで?
2022-08-16 03:12:16
質問
MySQL クエリから結果の数を取得し、同時に結果を制限する方法があるのかどうか疑問に思っていました。
ページネーションが機能する方法(私が理解するところでは)、最初に私は次のようなことをします。
query = SELECT COUNT(*) FROM `table` WHERE `some_condition`
num_rows(query)を取得した後、結果の数を得ました。しかし、実際に結果を制限するためには、次のような2番目のクエリを実行する必要があります。
query2 = SELECT COUNT(*) FROM `table` WHERE `some_condition` LIMIT 0, 10
私の質問です。与えられた結果の総数を取得し、1つのクエリで返される結果を制限する方法はありますか?または、これを行うより効率的な方法。ありがとうございます。
どのように解決するのですか?
いいえ、ページ分割をしたい多くのアプリケーションはそうしなければならないのです。クエリが2回になるとはいえ、これは信頼性が高く防弾です。しかし、数秒間カウントをキャッシュすることができ、それは多くのことを助けるでしょう。
もうひとつの方法は
SQL_CALC_FOUND_ROWS
節を使用し、その後に
SELECT FOUND_ROWS()
を呼び出す必要があります。
FOUND_ROWS()
の呼び出しを後回しにしなければならないことは別として、これには問題があります。そこには
MySQL のバグです。
に影響を与えるということです。
ORDER BY
クエリに影響を与え、大きなテーブルでは 2 つのクエリを使用する素朴な方法よりもはるかに遅くなります。
関連
-
[解決済み] MySQLで1つを除くすべての列を選択しますか?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] .NETでのdecimal, float, doubleの違い?
-
[解決済み] MySQLのクエリ結果をCSV形式で出力するにはどうすればよいですか?
-
[解決済み] MySQLです。大きなVARCHARとTEXTの比較?
-
[解決済み] MySQLでibdata1ファイルを縮小/パージする方法
-
[解決済み] MySQLデータベースの全テーブルのレコード数を取得する
-
[解決済み】Oracleクエリが順序付け後に返す行数を制限するにはどうすればいいですか?
-
[解決済み] MySQL テーブルに行が存在するかどうかをテストする最良の方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン