インスピレーションと洞察から生成されました 3 ソースから
はじめに
-
実行計画の定義: 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.sql
やutlxplp.sql
スクリプトを使用して、PLAN TABLE出力を表示できます。 -
表示オプション:
DBMS_XPLAN.DISPLAY
関数は、PLAN TABLE出力を表示するオプションを受け入れます。
実行計画の読み方 [2]
-
実行順序: 実行計画の操作は、最も右端にインデントされている行から始まります。
-
アクセス方法: インデックスを使用しているかどうかは、Nameで確認できます。
-
検索条件: Predicate Informationで検索条件を確認できます。
-
結合方式: ネステッド・ループ結合、ハッシュ結合、ソート/マージ結合の3つがあります。
-
実行計画のツリー構造: 実行計画はツリー構造を持ち、各ステップの処理内容を理解することが重要です。
実行計画のチューニング [1]
-
チューニングの重要性: SQLチューニングを行うには、実行計画についての十分な理解が不可欠です。
-
パフォーマンス向上: 実行計画を確認し、パフォーマンスを高めることができます。
-
SQL計画管理: SQL計画管理を使用して、SQLパフォーマンスの低下を回避できます。
-
統計情報の活用: 統計情報を活用して、より効率的な実行計画を選択できます。
-
実行計画の評価:
EXPLAIN PLAN
を使用して、アクセス計画を判断し、最適な計画であることを確認します。
実行計画の変化理由 [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>