Oracleオプティマイザにより、すべてのSQL文について実行計画(その文を実行するためにサーバーが行う一連の手順)が生成されます。これらの手順は、『Oracle Databaseアプリケーション開発者ガイド - 基礎編』に記載されたルールによって決まります。これらのルールに従うと、最適なSQL文を作成できます。
場合によっては、サーバーに対してSQL文を最適化する方法を示すことができます。このようにして示す内容はヒントと呼ばれ、これによりオプティマイザによる決定に運用側から影響を与えることができます。
ヒントはディレクティブではなく、オプティマイザによるジョブの実行を助けるだけです。一部のヒントはSQL文を最適化するために使用される情報の範囲を制限し、他のヒントは全体的な戦略を提案します。
ヒントを使用して、次の事項を指定できます。
SQL文の最適化アプローチ
参照されているそれぞれの表へのアクセス・パス
結合のための結合順序
表を結合する方法
つまり、ヒントは次の4つのカテゴリに分けられます。
最適化アプローチ
アクセス・パス
結合順序
結合操作
たとえば、2つの最適化アプローチ・ヒントであるCOSTとNOCOSTは、コストベースのオプティマイザとルールベースのオプティマイザをそれぞれ起動します。
SELECT、UPDATE、INSERTあるいはDELETE文の動詞の直後にC言語のスタイルのコメントを記述して、オプティマイザにヒントを与えます。たとえば、オプティマイザは次の文でコストベースのアプローチを使用します。
SELECT /*+ COST */ ename, sal INTO ...
C++コードでは、//+という形式のオプティマイザ・ヒントも認識されます。
オプティマイザ・ヒントの詳細は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。
SQLトレース機能とEXPLAIN PLAN文を使用すると、アプリケーションの処理速度を低下させるおそれのあるSQL文を特定できます。
SQLトレース機能は、実行された各SQL文についての統計情報を生成します。この統計表示で、最も処理時間のかかる文がどれか判断できます。このため、それらの文の処理効率のチューニングに専念できます。
EXPLAIN PLAN文はアプリケーション内の各SQL文に対する実行計画を示します。実行計画には、SQL文の実行に必要なデータベース処理が記述されています。実行計画を使用すると、非効率的なSQL文を特定できます。
これらのツールの使用方法および出力分析方法は、『Oracle Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。