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 におけるイベントバブリングとイベントキャプチャの簡単な分析

推薦する

jsは徐々に増加するデジタルアニメーションを実現します

目次背景コンテナを固定し、数字を上にスクロールすることで、スクロールホイールと同様の効果を実現します...

Linux で完全な Samba サーバーを構築する方法 (CentOS バージョン)

序文smb は、クライアントとサーバー間の Web 接続および情報通信に使用できるプロトコルの名前で...

Vue2.0/3.0 での provide と inject の使用例

目次1. provide/inject の用途は何ですか? 2. provide/injectの使い...

Windows 10 の Docker で countly-server を展開して実行するプロセス

私は最近countlyに触れて、慣れてきました。私は、必要に応じてcountlyのクラッシュプラグイ...

MySQL における 10 進数型の使用法の簡単な紹介

MySQL でサポートされている浮動小数点型は、 FLOAT 、 DOUBLE 、およびDECIMA...

CSS コンテンツ属性を使用して、マウスホバープロンプト (ツールチップ) 効果を実現します。

なぜこのような効果を実現するのでしょうか。実は、この効果もタイトルプロンプトから派生したものですが、...

HTML でのアンカーポイントの使用_PowerNode Java アカデミー

ここで、アンカー ポイントを制御するいくつかの状況をまとめてみましょう。 1. 同じページ <...

$remote_addr に基づく nginx フロントエンド配布方法の詳細な説明

要件は次のとおりです。ドメイン名の下に複数のサーバーがあります。現在、特定の地域をテストしています。...

VueのSSRサーバーサイドレンダリング例の詳細な説明

サーバーサイドレンダリング (SSR) を使用する理由検索エンジンのクローラーが完全にレンダリングさ...

JavaScript でネットワーク速度をテストする方法

目次序文ネットワーク速度のフロントエンド判定原理のまとめ1. img を読み込むか Ajax リクエ...

Linux環境でグラフデータベースneo4jを構築する方法の説明

Neo4j (Nosql の 1 つ) は、高性能なグラフ データベース (分散をサポートしていませ...

CSS でデジタル ページング効果のコードと手順を実装する方法

かなりの数のウェブサイトがデジタルページング効果を使用しています。たとえば、このサイトのページングも...

JavaScript ステートメントの一般的な for ループの詳細な説明

JavaScript には、for、for in、for of、forEach ループなど、多くのル...

CSS3は水平方向の中央揃え、垂直方向の中央揃え、水平方向と垂直方向の中央揃えのサンプルコードを実装しています。

フロントエンドの担当者であれば、面接でも仕事中でも、「CSS を使用して中央揃えにする」という効果に...

Web デザインのための 5 つのシンプルな XHTML Web フォーム

Web デザイン 5 におけるシンプルな XHTML Web フォーム。 テクニック 1: ラベル ...