目次
Oracle ページング クエリの原理とは何ですか?
ホームページ データベース Oracle Oracle ページング クエリの原理は何ですか

Oracle ページング クエリの原理は何ですか

Jan 25, 2022 pm 04:59 PM
oracle

Oracle のページング クエリの原則: 1. ORACLE の rownum フィールドの特性を使用してクエリを実行します; 2. 指定された数の N 個のデータをクエリします; 3. 指定された数の N 個のデータから M 個のデータを削除しますクエリ結果の数; 4. Web 開発では、M と N をパラメータとして渡すことで、ページ分割された結果を取得できます。

Oracle ページング クエリの原理は何ですか

このチュートリアルの動作環境: Windows 10 システム、Oracle 11g バージョン、Dell G3 コンピューター。

Oracle ページング クエリの原理とは何ですか?

ページングの原理:

1. ORACLE の rownum フィールドの特性を使用してクエリを実行します。

2. 最初の N 個のデータをクエリします。

3. ステップ 2 のクエリ結果から M ~ N 個のデータを取得します。

4. Web の場合開発 ページ分割された結果を取得するには、パラメータとして M と N を渡します。

例: テーブル内の 20 ~ 30 件のレコードをクエリする場合、SQL ステートメントは次のようになります。

select *   from( 
 select   rownum  as  pageNo,  A.*   from    tableName     A   where   rownum   <=   30)  B  where B.pageNo >=20;
ログイン後にコピー

例:

--従業員表で最も給与の高い上位 5 人を取得するにはどうすればよいでしょうか?

SELECT * FROM(
SELECT * FROM emp ORDER BY sal DESC)
WHERE Rownum<6
ログイン後にコピー

--従業員テーブルで給与が 5 位にランクされている従業員の情報を取得する方法

SELECT * FROM(
SELECT * FROM emp ORDER BY sal DESC)
WHERE Rownum=5
ログイン後にコピー

--クエリにコンテンツが見つかりません

- -同じ ROWNUM>=5 クエリ 5 最初の場所以降の結果も失敗しました

--これには ROWNUM が関係しますが、ROWNUM より小さい値のみを指定できますが、それ以上にすることはできません。つまり、Oracle データベースでのページング クエリに対する重要な障害はこれです。

--原理としては、ROWNUMは毎回1から並べなければならない擬似列です。したがって、ROWNUM>=n となります。たとえば、1 が任意の n (項目数) より大きいかどうかは当てはまりません。 ROWNUM=1 で見つけることができます。 1>=1 が成り立つからです。 N=2,1>=2 は当てはまりません。したがって、最初の項目のみが以上であるかどうかをチェックできます。プラス以下。私が確認できるのはこれだけです。したがって、この難しさは、ページング クエリの難しさと障害を増大させるとみなすことができます。

--方法 1 最も単純なクエリ

--記事 5 ~ 10。

--ネスト層とサブクエリは 1 つだけです。

SELECT * FROM
(SELECT ROWNUM rn ,e.* FROM emp e WHERE ROWNUM<=10)
WHERE rn>=5;
ログイン後にコピー

--これは実際には次のメソッドから変換されます。

--つまり、サブクエリによって取得された新しいテーブルが再度クエリされます。

--重要なステップは ROWNUM rn です。

--e.* を忘れないでください。そうしないと完全なデータが存在しません。

SELECT * FROM (SELECT ROWNUM rn, e.*
          FROM emp e
         WHERE ROWNUM <= 10) table_1
 WHERE table_1.rn>= 5;
ログイン後にコピー

--上はソートされていません、次はソートされています

--クエリを実行する前に最初にソートする必要があるため、テーブルが大きくなるほど効率が遅くなります。

--方法 2

SELECT * FROM
(SELECT ROWNUM rm ,e.* FROM emp e order by sal DESC )
WHERE rm>=5 AND rm<=10
ログイン後にコピー

--以下は分析関数を使用する方法です;

--方法 3

SELECT * 
FROM (SELECT emp.*,
   ROW_NUMBER () OVER (ORDER BY sal DESC) rank 
    FROM emp)   
WHERE rank >=6 AND rank<=10;
ログイン後にコピー

--ただし、実際のクエリ結果を見ると、まったく異なることがわかります。

--手動でチェックしました。解析関数法の結果は正しいです。分かりません。

--誰か説明してもらえますか?

--意味のない

SELECT * FROM 
(SELECT e.*, ROWNUM AS rn from 
( SELECT * FROM emp ORDER BY sal DESC) e
)ee 
WHERE ee.rn>=5 AND ee.rn<=10
ログイン後にコピー

--方法 4 (Baidu、Tmall クエリなどの大規模なデータ クエリ)

SELECT * FROM(
SELECT e.* ,ROWNUM rn
FROM (
SELECT *
FROM emp
ORDER BY sal DESC
) e
WHERE  ROWNUM<=10
)WHERE rn>=6;
ログイン後にコピー

--分解手順

--最初のステップ:

SELECT * FROM emp ORDER BY sal DESC
ログイン後にコピー

--2 番目のステップ:

SELECT e .*,ROWNUM rn FROM
(SELECT * FROM emp ORDER BY sal DESC) e
ログイン後にコピー

--3 番目のステップ:

SELECT e .*,ROWNUM rn FROM
(SELECT * FROM emp ORDER BY sal DESC) e
WHERE ROWNUM<=10
ログイン後にコピー

--4 番目のステップ:

SELECT * FROM(
SELECT e .*,ROWNUM rn FROM
(SELECT * FROM emp ORDER BY sal DESC) e
WHERE ROWNUM<=10)
WHERE rn>=5
ログイン後にコピー

--間違った推測です。

SELECT e .*,ROWNUM rn FROM
(SELECT * FROM emp ORDER BY sal DESC) e
WHERE rn<=10
ログイン後にコピー

--エイリアスを作成するには、データ テーブルをクエリする必要があります。

--クエリ条件はまだ存在しない条件によって判断されるため、当然失敗します。

--方法 5、アイドル的で退屈な使用法

WITH ee AS (
  SELECT e.*, ROWNUM rn FROM
 ( SELECT * FROM emp ORDER BY sal DESC )e
  )
  SELECT ee.*
  FROM ee
  WHERE ee.rn>=5 AND ee.rn<=10
ログイン後にコピー

推奨チュートリアル: 「Oracle ビデオ チュートリアル

以上がOracle ページング クエリの原理は何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Oracleの表空間サイズを確認する方法 Oracleの表空間サイズを確認する方法 Apr 11, 2025 pm 08:15 PM

Oracle Tablespaceサイズを照会するには、次の手順に従ってください。クエリを実行して、TableSpace名を決定します。DBA_TABLESPACesからTableSpace_Nameを選択します。クエリを実行してテーブルスペースのサイズをクエリします:sum(bytes)をtotal_size、sum(bytes_free)asavail_space、sum(bytes) - sum(bytes_free)as sum(bytes_free)as dba_data_files from tablespace_

Oracleのインストールをアンインストールする方法は失敗しました Oracleのインストールをアンインストールする方法は失敗しました Apr 11, 2025 pm 08:24 PM

Oracleインストール障害のためのアンインストールメソッド:Oracleサービスを閉じ、Oracleプログラムファイルとレジストリキーを削除し、Oracle環境変数をアンインストールし、コンピューターを再起動します。アンインストールが失敗した場合、Oracle Universal Uninstallツールを使用して手動でアンインストールできます。

Oracleビューを暗号化する方法 Oracleビューを暗号化する方法 Apr 11, 2025 pm 08:30 PM

Oracle View暗号化により、ビュー内のデータを暗号化でき、それにより機密情報のセキュリティが強化されます。手順には以下が含まれます。1)マスター暗号化キー(MEK)の作成。 2)暗号化されたビューを作成し、暗号化されるビューとMEKを指定します。 3)暗号化されたビューにアクセスすることをユーザーに許可します。暗号化されたビューがどのように機能するか:ユーザーが暗号化されたビューを求めてクエリをするとき、OracleはMEKを使用してデータを復号化し、認定ユーザーのみが読み取り可能なデータにアクセスできるようにします。

Oracleのインスタンス名を表示する方法 Oracleのインスタンス名を表示する方法 Apr 11, 2025 pm 08:18 PM

Oracleでインスタンス名を表示するには3つの方法があります。「sqlplus」と「v $ instanceからselect instance_name;」を使用します。」コマンドラインのコマンド。 「show instance_name;」を使用しますSQL*Plusのコマンド。オペレーティングシステムのタスクマネージャー、Oracle Enterprise Manager、またはオペレーティングシステムを介して、環境変数(LinuxのOracle_Sid)を確認してください。

Oracle Cursorを閉じる問題を解決する方法 Oracle Cursorを閉じる問題を解決する方法 Apr 11, 2025 pm 10:18 PM

Oracle Cursorの閉鎖問題を解決する方法には、次のものが含まれます。 Scopeが終了した後に自動的に閉じるように、for update句のカーソルを宣言します。使用句のカーソルを宣言して、関連するPL/SQL変数が閉じられたときに自動的に閉じるようにします。例外処理を使用して、例外の状況でカーソルが閉じていることを確認します。接続プールを使用して、カーソルを自動的に閉じます。自動送信を無効にし、カーソルの閉鎖を遅延させます。

Oracleからすべてのデータを削除する方法 Oracleからすべてのデータを削除する方法 Apr 11, 2025 pm 08:36 PM

Oracleのすべてのデータを削除するには、次の手順が必要です。1。接続を確立します。 2。外部のキーの制約を無効にします。 3.テーブルデータを削除します。 4.トランザクションを送信します。 5.外部キーの制約を有効にします(オプション)。データの損失を防ぐために、実行前にデータベースを必ずバックアップしてください。

無効な数のOracleを確認する方法 無効な数のOracleを確認する方法 Apr 11, 2025 pm 08:27 PM

Oracle無効な数値誤差は、データ型の不一致、数値オーバーフロー、データ変換エラー、またはデータの破損によって引き起こされる場合があります。トラブルシューティング手順には、データ型のチェック、デジタルオーバーフローの検出、データ変換のチェック、データの破損のチェック、nls_numeric_charactersパラメーターの構成、データ検証ロギングの有効化など、他の可能なソリューションの調査が含まれます。

Oracle Dynamic SQLを作成する方法 Oracle Dynamic SQLを作成する方法 Apr 12, 2025 am 06:06 AM

SQLステートメントは、Oracleの動的SQLを使用して、ランタイム入力に基づいて作成および実行できます。手順には、次のものが含まれます。動的に生成されたSQLステートメントを保存するための空の文字列変数を準備します。 executeを即座に使用するか、ステートメントを準備して、動的なSQLステートメントをコンパイルおよび実行します。バインド変数を使用して、ユーザー入力またはその他の動的値を動的SQLに渡します。実行するか、実行するか、動的SQLステートメントを実行します。

See all articles