MySQL、Oracle、SQL Server のページングクエリ例の分析

MySQL、Oracle、SQL Server のページングクエリ例の分析

最近、Oracle、MySQL、SQL Server 2005 のデータ ページング クエリについて簡単な調査を行い、それぞれのクエリ ステートメントを投稿して、誰でも学習できるようにしました...

(I) MySQLのページングクエリ

MySQL のページング クエリは最も簡単です。キーワード制限を使用してクエリを実行できます。一般的なクエリ ステートメントは次のとおりです。

o.*from(sql) o limit firstIndex,pageSizeを選択します

次のスクリーンショットに示すように、ページごとに表示されるレコード数は 20 です。

これらの20件のレコードをクエリ(1-20)

これらの 20 件のレコード (21-40) をクエリします


MySQL ページング クエリは非常にシンプルです...

(II) sqlserver2005のページングクエリ

SQL Server 2005 より前では、top キーワードを使用してページング クエリを実装していましたが、効率が低かったです。SQL Server 2005 以降のバージョンでは、row_number() 分析関数を使用してページング クエリを完了し、効率が大幅に向上しました。ただし、SQL ステートメントはより複雑です。ページング クエリの一般的な式は次のとおりです。

selecttoppageSizeo.*from(selectrow_number()over(orderbyorderColumn)asrownumber,*from(sql)asowhererownumber>firstIndex;

下のスクリーンショットを見ると、1 ページあたり 20 件のレコードが表示されています。

これらの20件のレコードをクエリ(1-20)

これらの 20 件のレコード (21-40) をクエリします

sqlserver の row_number 関数を知っていれば、ページングは​​簡単です...

(III) Oracleページングクエリ

次に、Oracle のページング クエリに焦点を当てます。Oracle には、ROWNUM と row_number() という比較的多くのページング クエリ メソッドがあります。今日は、効率がわずかに優れている 2 つのページング クエリ ステートメントに主に焦点を当てます。

①ROWNUMクエリページング式:

select*from(selecta.*,ROWNUMrn from(sql)a whereROWNUM<=(firstIndex+pageSize))wherern>firstIndex

次のスクリーンショットは、この方法で実行されたクエリを示しています。

これらの 20 件のレコードをクエリ (1-21) します***** (ID=6 のレコードはないため、クエリされる最大 ID は 21 です)



これらの 20 件のレコードをクエリ (22-41) します***** (ID=6 のレコードは存在しないため、クエリする最初の ID は 22 で、最大 ID は 41 です)

②row_number()解析関数ページングクエリメソッド:

select*from(select*from(selectt.*,row_number()over(orderbyorderColumn)asrownumberfrom(sql)t) p wherep.rownumber>firstIndex)whererownum<=pageSize

次のスクリーンショットは、row_number() を使用したページング クエリの効果を示しています。

これらの 20 件のレコードをクエリ (1-21) します***** (ID=6 のレコードはないため、クエリされる最大 ID は 21 です)



これらの 20 件のレコードをクエリ (22-41) します***** (ID=6 のレコードは存在しないため、クエリする最初の ID は 22 で、最大 ID は 41 です)


ROWNUM クエリ メソッドでは、第 2 レベルの SQL ステートメントに「 where ROWNUM<(firstIndex+pageSize)order by idascがあり、データ テーブルから (firstIndex+pageSize) レコードをクエリします。したがって、この値が非常に小さい場合、効率は非常に良好になります。大規模なデータ フォームでこの値が数千の場合 (例: select* from wyuse where rownum<(5000) order by idasc 、最初に 5000 レコードが選択され、当然、効率は大幅に低下します。

要約する

以上が編集者によるMySQL、Oracle、SQL Serverのページングクエリの紹介です。皆様のお役に立てれば幸いです。ご質問がございましたら、メッセージを残していただければ、編集者がすぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL 1対多関連クエリのページングエラー問題の解決方法
  • MySQL 百万レベルのデータページングクエリ最適化ソリューション
  • 数千万のデータを扱うMySQLのページングクエリのパフォーマンスを最適化する
  • MySQL の制限使用法とページングクエリステートメントのパフォーマンス分析の詳細な説明
  • Mysql 制限ページングクエリ最適化の詳細な説明
  • Oracle、MySQL、SqlServe のページング クエリ ステートメントの違いの概要
  • mysql、mssql、oracle のページング クエリ メソッドの詳細な説明
  • MySQL のページングクエリの 2 つのソリューションの比較
  • 3 つのデータベース (Oracle、MySQL、SqlServer) のページング クエリの例
  • MySQL における SQL ページングクエリのいくつかの実装方法と利点と欠点

<<:  CocosCreatorでJSZip圧縮を使用する方法

>>:  TomcatはLog4jを使用してcatalina.outログを出力します。

推薦する

MySQL の group by と order by を一緒に使用する方法

テーブル:reward(報酬テーブル)があるとします。テーブル構造は次のようになります。 テーブルt...

Lvs+Nginx クラスターを使用して高並列アーキテクチャを構築する例

目次1. Lvsの紹介2. Lvs負荷分散モード2.1 NAT 2.2 ターン2.3 DRモード3....

MySQL で重複しない携帯電話番号テーブルをバッチ生成する方法のサンプルコード

序文多くの MySQL テスト シナリオでは、テスト用に一部のテスト データを手動で生成する必要があ...

React 手書きタブ切り替え問題

親ファイル React をインポートし、{useState} を 'react' か...

MySQLの数値型自動増分における落とし穴

テーブル構造を設計する場合、数値型は最も一般的な型の 1 つですが、数値型をうまく使用するのは想像す...

MySQL の全体的なアーキテクチャの紹介

MySQL の全体的なアーキテクチャは、サーバー層とストレージ エンジン層に分かれています。サーバー...

Maven で tomcat8-maven-plugin プラグインを使用する詳細なチュートリアル

オンラインで多くの記事を検索しましたが、解決策は見つかりませんでした。次のように、tomcat7-m...

Navicat がリモートで SQL Server に接続し、MySQL に変換する詳細な手順

序文最近、プロジェクトで SQL Server を使用するプログラムに遭遇しました。このデータベース...

ウェブページをデザインするには?ウェブページを作成するには?

Web デザインの理解に関しては、多くの人がまだ Web ページ制作のレベルにとどまっているようで...

MySQLパーティションテーブルは月別に分類されています

目次テーブルを作成するデータベース ファイルを表示します。入れるクエリ消去補足:Mysqlは月テーブ...

MySQL マスタースレーブ同期遅延の原因と解決策

歴史的な理由により、MySQL レプリケーションは、REDO ログではなく論理バイナリ ログに基づい...

Jmeterはデータベースプロセスダイアグラムに接続します

1. MySQL jdbc ドライバー (mysql-connector-java-5.1.28.j...

mysql5.7 ユーザー権限の作成、ユーザーの削除、権限の取り消し

1. ユーザーを作成します。注文: 'password' によって識別される ...

Nginxの現在の制限設定の詳細な説明

この記事では、最も単純なものから最も複雑なものまで、Nginx の現在の制限構成を例を使って説明しま...

TSオブジェクトのスプレッド演算子とレスト演算子の詳細な説明

目次概要オブジェクトの残り属性オブジェクトの拡張プロパティオブジェクトの浅いコピーを作成するkeyo...