ホームページ  >  記事  >  データベース  >  Oracle が実行計画をクエリする方法について話しましょう

Oracle が実行計画をクエリする方法について話しましょう

WBOY
WBOY転載
2022-05-05 19:10:144044ブラウズ

この記事では、Oracle に関する関連知識を提供します。主にクエリ実行プランに関する関連内容を紹介します。実行プランはクエリ プランとも呼ばれ、データベースが実行する具体的な手順です。 SQL ステートメント。以下のプロセスを見てみましょう。皆様のお役に立てれば幸いです。

Oracle が実行計画をクエリする方法について話しましょう

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

実行プラン (実行プラン) は、クエリ プラン (クエリ プラン) とも呼ばれます。 , データベースが SQL ステートメントを実行するための具体的な手順とプロセスです。 SQL クエリ ステートメントの実行計画には主に次のものが含まれます。

  • テーブルへのアクセス方法。データベースは、インデックスまたはテーブル全体のスキャンを通じてテーブル内のデータにアクセスします。

  • #複数のテーブルを結合する方法。データベースがテーブルを接続するために使用する接続アルゴリズム (複数のテーブルの順次アクセス シーケンスを含む)。

  • グループ化、集計、並べ替えなどの操作を実装する方法。

データベースごとに SQL クエリの実行プロセスに異なる実装方法が採用されていますが、クエリ ステートメントは通常、アナライザー、オプティマイザー、エグゼキューターによって処理され、最終結果を返す必要があります。同時に、アクセスパフォーマンスを向上させるためにさまざまなキャッシュも使用できます。

クエリ文は、簡単に言うと、クライアントの送信からサーバーが最終結果を返すまでの流れで、大まかに図のような流れになります。

まず、クライアントは SQL ステートメントを送信します。この前に、クライアントはデータベース サーバーに接続する必要があります。図のコネクタは、クライアント接続の確立と管理を担当するコンポーネントです。

次に、アナライザー (パーサー) が SQL ステートメントのさまざまなコンポーネントを解析し、構文解析を実行して、SQL ステートメントの構文が仕様に準拠しているかどうかを確認します。

たとえば、次のステートメントの FROM キーワードは、FORM:

と誤って記述されています。この場合、すべてのデータベース管理システムは構文ミスを返します。 。

オプティマイザは、データベースによって収集された統計情報を使用して、SQL ステートメントを実行する最適な方法を決定します。たとえば、単一のテーブルにインデックス スキャンとフル テーブル スキャンのどちらでアクセスするか、複数のテーブルを接続する順序、データの並べ替え方法などです。

オプティマイザはクエリのパフォーマンスを決定する重要なコンポーネントであり、データベースの統計情報がオプティマイザの判断の基礎となります。

最後に、エグゼキュータは、対応する実行モジュールを呼び出して、最適化された実行計画に従ってデータを取得し、結果をクライアントに返します。

実行計画を表示する方法

方法 1: ステートメント ビュー

Oracle データベースでは、次の方法も使用できます。 EXPLAIN PLAN FOR コマンドは実行計画を生成しますが、次の 2 つのコマンドを実行する必要があります。

EXPLAIN PLAN FOR

SELECT * FROM  T_USER1 t where t.user_name = 'Admin';

SELECT * FROM  TABLE(dbms_xplan.display);
EXPLAIN PLAN FOR コマンドを使用して実行計画を生成し、それをシステム テーブル PLAN_TABLE を実行し、クエリ ステートメントを通じて生成された実行プランを表示します。

ここで、dbms_xplan.display は Oracle システム関数です。返された結果は、ステートメントが Oracle の「SYS_C0016771」インデックス範囲スキャンを通じてデータを検索したことを示しています。

方法 2: ツールを使用して表示する

一般的に使用される Oracle データベース開発ツール PL/SQL で、SQL スクリプトを選択します, F5 キーを押すと、方法 1 でクエリした結果と同じスクリプトの実行計画情報が自動的に表示されます。

実行プロセス分析

次の記事を参照してください:

Oracle データベースでは、システム テーブル user_indexes および user_ind_columns クエリ インデックスと関連フィールド情報。

SELECT * FROM  user_indexes;

SELECT * FROM  user_ind_columns;
推奨チュートリアル: 「

Oracle ビデオ チュートリアル

以上がOracle が実行計画をクエリする方法について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。