【ORACLE】オプティマイザと実行計画についてここでは、ORACLEデータベースにおけるオプティマイザと実行計画について簡単に紹介します。実行計画の見方や取得方法は↓で紹介していますのでぜひ参考にしてください。実行計画とはSQLをどのように実行するか書かれた計画書です。読んで字のごとくです。書かれている内容は以下の通りです。・テーブルやビューにどのような順番でアクセスするか・テーブルからデータを取得する際、インデックス(索引)を利用するか・テーブルやビューをどのような結合方法でデータを結合するかこれはSQLの実行速度にダイレクトに影響してきます。この実行計画を作成しているのがオプティマイザです。実行計画の具体的な見方・読み方については「【ORACLE】SQLの実行計画の見方」を参考にしてください。オプティマイザとはとっても簡単にいうとORACLEの頭、つまり脳のようなものです。SQLを実行したとき、オプティマイザがSQLの実行計画を作成します。SQLの実行計画を作るときは以下の情報から、決められたルールに基づいて最適な実行計画を作成します。・インデックス(索引)の情報オプティマイザは決められたルールに基づいて実行計画を作成します。ORACLEでは基本的にCBO(コストベースオプティマイザ)というルールになります。CBOはテーブルの統計情報(データ件数やデータの分布、インデックス内の値の割合など)から、最も効率的だと判断されたアクセス方法、結合方法で実行計画を作成します。繰り返すようですが、つまりORACLEではテーブルやインデックスのデータの中身から、オプティマイザが独自に最適な方法でデータを取得する計画を作ってくれます。CBOが基にするテーブルの内容、いわゆる統計情報が最新でない場合は必ずしも最適な実行計画が作成されるとは限りません。統計情報については↓で詳しく解説していますので参考にしてください。>>ORACLEのテーブルやインデックスの「統計情報」とは最後に最後までお読みいただきありがとうございます。SQLが遅くてお困りの場合は、まずはSQLが遅くなる原因を、こちらで「SQLのレスポンスが遅い原因3つ」で確認してみてください。この他、SQLのチューニングについては、「SELECT文のSQLチューニング方法まとめ」で詳しく解説していますので、ぜひ参考にしてください。