ページング技術の原理と実装の意味と方法(1)_MySQL
ページング技術とは
ページングは、ユーザーが毎回見るのはすべてのデータではなく、その中に自習したい内容が見つからない場合に、すべてのデータをセグメントに分けて表示する技術です。ページ番号を設定したり、必要なコンテンツが見つかるまでページをめくって表示コンテンツを変換したりすることもできます。実際、これは本を読むときとよく似ています。
次のページでは、2 つの一般的なページング方法を示します:
ページネーションの意味
ページングは確かに効果的ですが、システムの複雑さは確実に増加します。しかし、データ量が少ない場合はもちろん回避できますが、企業情報システムの場合、データ量は制限されません。特定のテーブルからの All Select * を無視して、クライアントが何千もの膨大なテーブル形式のデータを許容できるとしても、ネットワークが混雑してストレスがかかります。サーバーは依然として無言の抗議を提示し、場合によっては完全なストライキで終わることもあります。この結末は、古代の暴君と彼の耐え難い臣下の物語に少し似ています。
プログラマは暴君ではありません。ほとんどの企業情報システムが 3 層またはそれ以上の層のアーキテクチャを持っているという事実を考慮すると、プログラマはデータを表示するときにページングの形式を採用する必要があります。顧客 . クレームが殺到したり、夜中に電話で起こされたりしたくないなら。
リクエストの開始からデータの返却までの全プロセス
ページネーションを行う決心がついたので、コードを記述する前に、典型的な 3 層アーキテクチャでは、リクエストの開始からデータを返すまでのプロセス全体が次のとおりであることを思い出してください。
上の図から、SQL ステートメントが処理された後、データベース、Web アプリケーション、およびブラウザーがすべてページングを実行できることがわかります。では、ページングを実行するのに最適な場所はどこでしょうか?
判断基準は速度です。当然のことですが、データベース サーバー、Web アプリケーション サーバー、クライアントの間にはネットワークがあり、そのネットワークで送信されるデータ量が少ないほど、データベースの応答は速くなります。サーバーと Web 一般に、アプリケーション サーバーの処理能力はクライアントの処理能力よりもはるかに強力です。これら 2 つの点から、クライアントでのページングの解決策は最も望ましくありません。
次に、残された方法は Web サーバー側でのページングとデータベース側でのページングの 2 つだけです。Web サーバー側でのページングを選択した場合でも、フィルタリングされたデータのほとんどは Web アプリケーション サーバーに送信されます。データベース側で直接ページングを実行するほど良くはありません。
したがって、より良いページング方法は、ページをめくるたびにデータベースからページ サイズのデータ ブロックのみを取得することです。このように、ページをめくるたびにデータベースにクエリを実行する必要がありますが、接続プールを使用する場合、クエリされるレコードの数は非常に少なく、ネットワーク上で送信されるデータ量はそれほど多くありません。 -データベース接続を確立するための消費プロセスをスキップできます。データベース側では、クエリ速度を向上させるために使用されるさまざまな成熟した最適化テクノロジがあり、アプリケーション サーバー層でのキャッシュよりもはるかに効果的です。
SQL ステートメントのページング
(1) MySql の Limit m,n ステートメント
Limit の後の 2 つのパラメーターのうち、パラメーター m は 0 から始まる開始インデックスです。パラメーター n は返されるレコードの数です。ページングが必要な場合は、これら 2 つの値を指定するだけです
(2) Oracle データベースの行番号
Oracle データベースでは、ページング方法は MySql ほど単純ではなく、それを実現するには rownum に依存する必要があります。
Rownum はレコードの行番号を表します。したがって、ページング データを取得するために rownum の範囲を指定する場合は、クエリ ステートメントのレイヤーでは実行できません。ページングを行うには、再度クエリを実行する必要があります。
リーリー
其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。
上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上。
选择第21到40条记录存在两种方法,一种是上面例子中展示的在查询的第二层通过ROWNUM <= 40来控制最大值,在查询的最外层控制最小值。而另一种方式是去掉查询第二层的WHERE ROWNUM <= 40语句,在查询的最外层控制分页的最小值和最大值。这是,查询语句如下:
SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A ) WHERE RN BETWEEN 21 AND 40
对比这两种写法,绝大多数的情况下,第一个查询的效率比第二个高得多。
这是由于CBO优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件WHERE ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了。
而第二个查询语句,由于查询条件BETWEEN 21 AND 40是存在于查询的第三层,而Oracle无法将第三层的查询条件推到最内层(即使推到最内层也没有意义,因为最内层查询不知道RN代表什么)。因此,对于第二个查询语句,Oracle最内层返回给中间层的是所有满足条件的数据,而中间层返回给最外层的也是所有数据。数据的过滤在最外层完成,显然这个效率要比第一个查询低得多。
上面分析的查询不仅仅是针对单表的简单查询,对于最内层查询是复杂的多表联合查询或最内层查询包含排序的情况一样有效。
精彩专题分享:
SQL Server分页技术总结:http://www.bitsCN.com/Special/604.htm
ASP.NET分页功能操作:http://www.bitsCN.com/Special/149.htm
javascript分页功能操作:http://www.bitsCN.com/Special/469.htm
jquery分页功能操作:http://www.bitsCN.com/Special/465.htm
php分页功能操作:http://www.bitsCN.com/Special/236.htm
其实分页技术还有很多其它技术,比如:Struts、hibernate等等都可实现。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 開発: テーブル データのソート機能とページング機能を実装する方法 Web 開発では、大量のデータを処理するのが一般的なタスクです。大量のデータを表示する必要があるテーブルの場合、通常、優れたユーザー エクスペリエンスを提供し、システム パフォーマンスを最適化するために、データの並べ替え機能とページング機能を実装する必要があります。この記事では、PHP を使用してテーブル データのソート機能とページング機能を実装する方法と、具体的なコード例を紹介します。ソート機能はテーブルにソート機能を実装しており、ユーザーはさまざまなフィールドに従って昇順または降順でソートできます。以下は実装フォームです

CakePHP は、開発者に多くの便利なツールと機能を提供する強力な PHP フレームワークです。その 1 つはページネーションです。これは、大量のデータを複数のページに分割し、閲覧と操作を容易にするのに役立ちます。デフォルトでは、CakePHP はいくつかの基本的なページネーション メソッドを提供しますが、場合によってはカスタムのページネーション メソッドを作成する必要がある場合があります。この記事では、CakePHP でカスタム ページネーションを作成する方法を説明します。ステップ 1: カスタム ページネーション クラスを作成する まず、カスタム ページネーション クラスを作成する必要があります。これ

データが増大し続けると、表形式の表示がより困難になります。ほとんどの場合、テーブル内のデータの量が多すぎるため、読み込みが遅くなり、ユーザーは必要なデータを見つけるために常にページを参照する必要があります。この記事では、JavaScript を使用して表データのページ分割表示を実現し、ユーザーが目的のデータを見つけやすくする方法を紹介します。 1. テーブルを動的に作成する ページング機能をより制御しやすくするには、テーブルを動的に作成する必要があります。 HTML ページに、以下のようなテーブル要素を追加します。

JavaScript を使用してテーブル ページング機能を実装するにはどうすればよいですか?インターネットの発展に伴い、テーブルを使用してデータを表示する Web サイトがますます増えています。データ量が多い場合には、ユーザー エクスペリエンスを向上させるためにデータをページに表示する必要があります。この記事では、JavaScript を使用してテーブル ページング機能を実装する方法と具体的なコード例を紹介します。 1. HTML 構造 まず、テーブルとページング ボタンをホストするための HTML 構造を準備する必要があります。 <tab を使用できます

MyBatis は優れた永続層フレームワークであり、XML とアノテーションに基づいたデータベース操作をサポートし、シンプルで使いやすく、豊富なプラグイン メカニズムも提供します。その中でも、ページング プラグインは、よく使用されるプラグインの 1 つです。この記事では、MyBatis ページング プラグインの原理を詳しく説明し、具体的なコード例で説明します。 1. ページング プラグインの原理 MyBatis 自体はネイティブ ページング機能を提供しませんが、プラグインを使用してページング クエリを実装できます。ページング プラグインの原理は主に MyBatis を傍受することです

Layui を使用してページング機能を備えたデータ表示ページを開発する方法 Layui は、シンプルで美しいインターフェイス コンポーネントと豊かなインタラクティブ エクスペリエンスを提供する軽量のフロントエンド UI フレームワークです。開発中、大量のデータを表示し、ページングを実行する必要がある状況によく遭遇します。以下はLayuiを使用して開発したページング機能付きのデータ表示ページの例です。まず、Layui 関連のファイルと依存関係を導入する必要があります。 HTML ページの <head> タグに次のコードを追加します。

Vue コンポーネントの実践: ページング コンポーネント開発の概要 Web アプリケーションでは、ページング機能は不可欠なコンポーネントです。優れたページング コンポーネントは、プレゼンテーションがシンプルかつ明確で、機能が豊富で、統合と使用が簡単である必要があります。この記事では、Vue.js フレームワークを使用して高度にカスタマイズ可能なページング コンポーネントを開発する方法を紹介します。 Vueコンポーネントを使った開発方法をコード例を通して詳しく解説します。テクノロジースタック Vue.js2.xJavaScript (ES6) HTML5 および CSS3 開発環境

Vue は、ユーザー インターフェイスを構築するための人気のある JavaScript フレームワークです。 Vue テクノロジーの開発では、ページング機能の実装が一般的な要件です。この記事では、Vue を使用してページング機能を実装する方法と具体的なコード例を紹介します。始める前に、いくつかの基礎知識を事前に準備する必要があります。まず、Vue の基本概念と構文を理解する必要があります。次に、Vue コンポーネントを使用してアプリケーションを構築する方法を知る必要があります。始める前に、Vue プロジェクトにページング プラグインをインストールする必要があります。
