インスピレーションと洞察から生成されました 3 ソースから

img6

img7

img8

img9

img10

img11

はじめに

  • 実行計画の定義: Oracle DatabaseがSQL文を実行するために使用するステップの組合せです。

  • 実行計画の役割: 各処理では、データベースからデータ行を物理的に検索するか、文を発行したユーザーのためにデータ行を準備します。

  • アクセスパスと結合順序: 実行計画には、文がアクセスする各表へのアクセス・パスと、適切な結合方法に基づく表の順序が含まれています。

  • コストベースオプティマイザ: 実行計画は、Oracleの内部コンポーネントであるコストベースオプティマイザ(CBO)によって作成されます。

  • 実行計画の表示: [EXPLAIN PLAN](prompt://ask_markdown?question=EXPLAIN+PLAN)文を使用して、オプティマイザによって選択された実行計画を表示できます。

実行計画の生成 [1]

  • 生成方法: EXPLAIN PLAN文を使用して、SQL文の実行計画を生成します。

  • オプティマイザの役割: オプティマイザは、SQL文に対して最適な実行計画を選択します。

  • 計画の変化: 実行計画は、基礎となるオプティマイザ入力が変化するたびに変化します。

  • スキーマの影響: スキーマの相違が実行計画に影響を与えることがあります。

  • コストの影響: データ量や統計、バインド変数の型と値がコストに影響を与えます。

実行計画の表示方法 [1]

  • 表示方法: [DBMS_XPLAN.DISPLAY](prompt://ask_markdown?question=DBMS_XPLAN.DISPLAY)関数を使用して、最新のPLAN TABLE出力を表示します。

  • PLAN TABLE: [PLAN_TABLE](prompt://ask_markdown?question=PLAN_TABLE)は、EXPLAIN PLAN文の出力を保持するためのデフォルトのサンプル出力表です。

  • V$SQL_PLANビュー: [V$SQL_PLAN](prompt://ask_markdown?question=V$SQL_PLAN)ビューを使用して、実行計画を表示することもできます。

  • 表示スクリプト: utlxpls.sqlutlxplp.sqlスクリプトを使用して、PLAN TABLE出力を表示できます。

  • 表示オプション: DBMS_XPLAN.DISPLAY関数は、PLAN TABLE出力を表示するオプションを受け入れます。

実行計画の読み方 [2]

  • 実行順序: 実行計画の操作は、最も右端にインデントされている行から始まります。

  • アクセス方法: インデックスを使用しているかどうかは、Nameで確認できます。

  • 検索条件: Predicate Informationで検索条件を確認できます。

  • 結合方式: ネステッド・ループ結合、ハッシュ結合、ソート/マージ結合の3つがあります。

  • 実行計画のツリー構造: 実行計画はツリー構造を持ち、各ステップの処理内容を理解することが重要です。

実行計画のチューニング [1]

  • チューニングの重要性: SQLチューニングを行うには、実行計画についての十分な理解が不可欠です。

  • パフォーマンス向上: 実行計画を確認し、パフォーマンスを高めることができます。

  • SQL計画管理: SQL計画管理を使用して、SQLパフォーマンスの低下を回避できます。

  • 統計情報の活用: 統計情報を活用して、より効率的な実行計画を選択できます。

  • 実行計画の評価: EXPLAIN PLANを使用して、アクセス計画を判断し、最適な計画であることを確認します。

img6

実行計画の変化理由 [1]

  • オプティマイザ入力の変化: 実行計画は、基礎となるオプティマイザ入力が変化するたびに変化します。

  • スキーマの相違: 実行とEXPLAIN PLANのデータベースが異なる場合、異なる実行計画が発生します。

  • コストの相違: コストに違いがある場合、オプティマイザは異なる実行計画を選択する可能性があります。

  • データ量と統計: データ量や統計がコストに影響を与え、実行計画が変化する要因となります。

  • バインド変数の影響: バインド変数の型と値が実行計画に影響を与えることがあります。

関連動画

<br><br>

<div class="-md-ext-youtube-widget"> { "title": "\u3010Oracle Database\u3011\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u2463\u3010\u5b9f\u884c\u8a08\u753b\u306e\u56fa\u5b9a\u65b9\u6cd5\u3011#021", "link": "https://www.youtube.com/watch?v=sN1JRg4oopU", "channel": { "name": ""}, "published_date": "Jul 11, 2021", "length": "15:02" }</div>

<div class="-md-ext-youtube-widget"> { "title": "\u6d25\u5cf6\u535a\u58eb\u306e\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u8b1b\u5ea7 - SQL\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u306f\u5b9f\u884c\u8a08\u753b\u304b\u3089", "link": "https://www.youtube.com/watch?v=qcNcxWlShno", "channel": { "name": ""}, "published_date": "Sep 30, 2021", "length": "1:31:55" }</div>

<div class="-md-ext-youtube-widget"> { "title": "Oracle \u30b3\u30f3\u30b5\u30eb\u3044\u3089\u305a\u306e\u30c1\u30e5\u30fc\u30cb\u30f3\u30b0\u3053\u3068\u306f\u3058\u3081", "link": "https://www.youtube.com/watch?v=N3KR3Gg8AzA", "channel": { "name": ""}, "published_date": "Feb 6, 2020", "length": "32:25" }</div>