MySQL は制限を使用してページング例メソッドを実装します

MySQL は制限を使用してページング例メソッドを実装します

1. 制限の基本的な実装

一般的に、クライアントは、pageNo (ページ番号) と pageSize (ページあたりのエントリ数) の 2 つのパラメータを渡してページングすることで、データベース内のデータを照会します。データ量が少ない場合 (タプルが数百または数千)、この問題を解決するには、MySQL の組み込み制限を使用します。

クライアントから受信 {pageNo:1,pagesize:10} 
テーブル limit (pageNo-1) * pageSize, pageSize から * を選択します。

クライアントから受信 {pageNo:5,pageSize:30} 

テーブル limit (pageNo-1) * pageSize,pageSize から * を選択します。

2. 主キーまたは一意のインデックスを作成する

データ量が少ない場合は、ページング データに制限をかけるだけでは、パフォーマンスの低下は顕著に表れません。ただし、データ量が数万から数百万に達すると、SQL ステートメントのパフォーマンスがデータの戻りに影響します。このとき、主キーまたは一意のインデックスを使用してデータをページ分割する必要があります。

主キーまたは一意のインデックスがgood_idであると仮定します。 
クライアントから受信 {pageNo:5,pagesize:10} 
テーブルから、good_id > (pageNo-1) * pageSize limit pageSize を選択します。 
–good_idが40~50のデータを返す

3. データに基づく再ランキング

情報を昇順または降順で返す必要がある場合は、データに基づいて上記のステートメントを再並べ替えます。デフォルトではASC/DESC順または逆順に並べ替えます

テーブルから、good_id > (pageNo-1)*pageSize となる値を選択します。order by good_id limit pageSize; 
–good_idが40から50までのデータを返し、good_idでデータをソートします

4. ページングのベストプラクティス

1ページあたり10項目を表示します:
現在 118 120, 125

逆の順序:
      サイズ 980 970 7 6 6 5 54 43 32

21 19 98   
次のページ:

  選択 
    * 
  から 
    tb1 
  どこ 
    nid < (select nid from (select nid from tb1 where nid < 現在のページ 最小値 order by nid desc limit data per page * [ページ番号 - 現在のページ]) A order by A.nid asc limit 1) 
  並び替え 
    なし説明 
  制限 10;



  選択 
    * 
  から 
    tb1 
  どこ 
    nid < (nid を選択 (nid を tb1 から選択、nid < 970 で順序を nid desc 制限 40 で並べ替え) A A.nid asc 制限 1 で並べ替え) 
  並び替え 
    なし説明 
  制限 10;


前のページ:

  選択 
    * 
  から 
    tb1 
  どこ 
    nid < (select nid from (select nid from tb1 where nid > 現在のページの最大値 order by nid asc limit data per page * [現在のページ - ページ番号]) A order by A.nid asc limit 1) 
  並び替え 
    なし説明 
  制限 10;


  選択 
    * 
  から 
    tb1 
  どこ 
    nid < (nid を選択 (nid を tb1 から選択、nid > 980 で順序を nid asc 制限 20 にする) A を A.nid desc 制限 1 で順序付ける) 
  並び替え 
    なし説明 
  制限 10;

以上が今回ご紹介したMySQLでページングを実装する方法の全てです。123WORDPRESS.COMをご愛顧、ご支援いただきありがとうございました。

以下もご興味があるかもしれません:
  • MySql ページングで limit+order by を使用する場合のデータ重複の解決策
  • 制限を使用すると、MySQL のページングがどんどん遅くなるのはなぜですか?
  • MySQL 最適化 query_cache_limit パラメータの説明
  • MySQLのorder byとlimitを混在させる際の落とし穴の詳細な説明
  • 大きなオフセットによる MySQL 制限ページングが遅い理由と最適化ソリューション
  • MySQL のソートとページング (order by と limit) と既存の落とし穴
  • MySQLの制限を使用して大規模なページングの問題を解決する方法
  • MySQLのページング制限のパフォーマンス問題についての簡単な説明
  • MySQL の制限パフォーマンス分析と最適化
  • MySQL クエリにおける LIMIT の大きなオフセットによって引き起こされるパフォーマンス低下の分析
  • MySQL で制限を使用するとパフォーマンスに影響するのはなぜですか?

<<:  Linuxファイルの基本属性の知識ポイントのまとめ

>>:  js におけるイベントバブリングとイベントキャプチャの簡単な分析

推薦する

vue3 を使用してカウント関数コンポーネントのカプセル化例を実装する

目次序文1. カプセル化の重要性2. どのようにカプセル化しますか? 1. アイデア2. 準備2. ...

JavaScript でよく使われる 3 つの Web エフェクトの詳細な説明

目次1要素オフセットシリーズ1.1 オフセットの概要1.2 オフセットとスタイルの違い視覚領域クライ...

Vue グローバル フィルターの概念、注意事項、基本的な使用方法

目次1. フィルターの概念1. グローバルフィルターのフォーマットをカスタマイズする2. フィルター...

vue-pdf はオンラインファイルプレビューを実現します

この記事では、参考までに、ファイルのオンラインプレビューを実現するためのvue-pdfの具体的なコー...

JavaScript 非同期プログラミングにおける Promise の初期の使用法の詳細な説明

1. 概要Promise オブジェクトは、ES6 で提案された非同期プログラミングの仕様です。非同期...

MySQL テーブルにはどのくらいの量のデータを保存できますか?

プログラマーは MySQL を扱う機会が多く、毎日触れているとも言えますが、MySQL テーブルには...

Webデザインにおけるフォームデザインテクニックのまとめ

「脳が多数の領域間の関係を処理できるように、入力は論理的なグループに分割する必要があります。」 – ...

JavaScript クロージャの説明

目次1. クロージャとは何ですか? 1.2 クロージャのメモ化: 関数は定義された環境を記憶する1....

Linux で大容量メモリ ページを持つ Oracle データベースを最適化する方法

序文PC サーバーは今日まで発展を続け、パフォーマンスにおいて大きな進歩を遂げてきました。 64ビッ...

Linux で ping は成功するがポートが利用できない問題を解決する方法

ping は成功したがポートにアクセスできない場合のポート可用性検出の説明ポート可用性検出ツールの紹...

基本構造、ドキュメント タイプ、ヘッダー、本文などの一般的な HTML 要素の概要。

1. 基本構造:コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBL...

MySQLデータベースを別のマシンに移行する方法の詳細な説明

1. まず、移行サーバー上のデータ ファイルを見つけます。MySQL 5.7 とデフォルトのインスト...

Linuxはデータディスクがアンインストールされ、新しいカスタムイメージを作成できることを確認します。

カスタムイメージに関するよくある質問データディスクを表示するにはどうすればいいですか? df コマン...

Docker に ElasticSearch をインストールする方法を 1 つの記事で解説

目次序文1. Dockerをインストールする2. ElasticSearchをインストールする3. ...

JavaScript Alert関数の実行順序の詳細な説明

目次質問分析する解決するAlert() 関数を置き換えるsetTimeOut関数まとめ質問数日前、J...