オプティマイザと実行計画について

本日は、ORACLEデータベースにおけるオプティマイザと実行計画について簡単に紹介します。

どちらもSQLを作成する上で、そしてチューニングを行う上で、必須の内容になります。

実行計画とは

SQLをどのように実行するか書かれた計画書です。
まさに読んで字のごとくです。

書かれている内容は以下の通りです。
・テーブルやビューにどのような順番でアクセスするか
・テーブルからデータを取得する際、インデックス(索引)を利用するか
・テーブルやビューをどのような結合方法でデータを結合するか

これはSQLの実行速度にダイレクトに影響してきます。

そしてこの実行計画を作成しているのがオプティマイザです。

オプティマイザとは

とっても簡単にいうとORACLEの頭、つまり脳のようなものです。
SQLを実行したとき、オプティマイザがSQLの実行計画を作成します。

実行計画を作るときには以下の情報から、決められたルールに基づいて最適な実行計画を作成します。
・テーブルの構造や権限といった情報
・インデックス(索引)の情報

オプティマイザの決められたルールとは

オプティマイザは決められたルールに基づいて実行計画を作成します。
ORACLEでは基本的にCBO(コストベースオプティマイザ)というルールになります。

CBOはテーブルの統計情報(データ件数やデータの分布、インデックス(索引)内の値の割合など)から、最も効率的だと判断されたアクセス方法、結合方法で実行計画を作成します。

繰り返すようですが、つまりORACLEではテーブルやインデックスのデータの中身から、オプティマイザが独自に最適な方法でデータを取得する計画を作ってくれます。

しかし注意点もあります。
CBOが基にするテーブルの内容、いわゆる統計情報が最新でない場合は必ずしも最適な実行計画が作成されるとは限りません。

↓もう少し詳しく統計情報の内容が知りたい方はこちら
ORACLEのテーブルやインデックスの「統計情報」とは

オプティマイザと実行計画について” に対して1件のコメントがあります。

この投稿はコメントできません。