SQL問合せの調整
問合せの調整は、レポートのパフォーマンスを向上するための最も重要なステップです。
TKPROFを使用した計画、SQLモニタリング、SQLトレース機能は、Oracle Databaseに対して実行されるアプリケーションのSQL文のチューニングに役立つ最も基本的なパフォーマンス診断ツールです。
「パブリッシャ」には、実行計画およびSQLモニタリング・レポートを生成し、SQLセッション・トレースを有効にするメカニズムが用意されています。 この機能は、Oracle Databaseに対して実行されるSQL文にのみ適用されます。 他のタイプのデータベースに対する論理問合せはサポートされていません。
実行計画の生成
実行計画は、単一の問合せのデータセット・レベル、またはレポート内のすべての問合せのレポート・レベルで生成できます。
実行計画の解釈の詳細は、「Oracle Database SQLチューニング・ガイド」を参照してください。
単一問合せの実行計画
SQLデータセット「編集」ダイアログから、問合せを実際に実行する前に実行計画を生成できます。 これにより、計画の最適な推定が提供されます。 問合せはnull値でバインドして実行されます。
「SQL問合せの編集」ダイアログで「実行計画の生成」をクリックします。 生成されたドキュメントをノート帳やWordPadなどのテキスト・エディタで開きます。
問合せのチューニングに関するガイドライン
一連のガイドラインに従って問合せをチューニングします。
-
実行計画を分析し、影響の大きいSQL文を特定します。
-
必要なフィルタ条件を追加し、不要な結合を削除します。
-
大きい表のFTS (全表スキャン)を回避および削除します。 場合によっては、小さい表の全表スキャンが高速になり、問合せフェッチが改善されることに注意してください。 小さい表には必ずキャッシュを使用します。
-
適切な索引の使用を強制するには、SQLヒントを使用します。
-
複雑なサブクエリーを避け、必要に応じてグローバル一時表を使用します。
-
複数の集計にはOracle SQL分析関数を使用します。
-
可能であれば、WHERE句のサブクエリーが多すぎないようにしてください。 かわりに、外部結合を使用して問合せをリライトします。
-
HAVINGやIN / NOT IN where句条件などのグループ関数は避けてください。
-
複雑な集計関数には、CASE文およびDECODE関数を使用します。
データベース・チューニングのヒント
データベースをチューニングする際のベスト・プラクティスに従います。
-
データベース管理者と連携して、表の統計を収集します。
-
サーバーが非常に遅い場合は、ネットワーク / IO / ディスクの問題を分析し、サーバー・パラメータを最適化します。
-
大規模なデータ・フェッチを回避できない一部のシナリオでは、データベースにPGAヒープ・サイズ・エラーが発生することがあります。 これらの問題を解決するには、最後の手段としてPGAヒープ・サイズを増やします。 次の文を使用して、ヒープ・サイズを増やします:
alter session set events '10261 trace name context forever, level 2097152'