SQL問合せのチューニング
問合せのチューニングは、レポートのパフォーマンスの向上のために非常に重要なステップです。
データ・セットの実行計画、データ・モデルのSQLモニタリング・レポートを生成し、SQLセッション・トレースを有効にできます。 この機能は、Oracle Databaseに対して実行されるSQL文に適用されます。 他のタイプのデータベースに対する論理問合せはサポートされていません。 管理者は、データ・モデル・ランタイム・プロパティを使用してSQLセッション・トレースを有効にできます。 BI管理者またはBIデータ・モデル開発者権限を持つユーザーは、スケジュール済ジョブの診断を有効にしてダウンロードできます。
「データ・モデルのテストおよびサンプル・データの生成」を参照してください。
実行計画の生成
単一問合せに対するデータセット・レベル、またはレポート内のすべての問合せに対するレポート・レベルで、実行計画を生成できます。
実行計画の解釈に関する詳細は、『Oracle Database SQLチューニング・ガイド』を参照してください。
単一問合せの実行計画
実際に問合せを実行する前に、SQLデータセットの「編集」ダイアログから、実行計画を生成できます。 これにより、計画が正確に予測されます。 問合せは、null値でバインドして実行されます。
「SQL問合せの編集」ダイアログの「実行計画の生成」をクリックします。 生成されたドキュメントを、NotepadまたはWordPadなどのテキスト・エディタで開きます。
問合せのチューニングに関するガイドライン
一連のガイドラインに従って問合せをチューニングします。
-
実行計画を分析し、影響が大きいSQL文を特定します。
-
必要なフィルタ条件を追加し、不要な結合を削除します。
-
大きな表に対するFTS (全表スキャン)を回避および削除します。 小さな表に対する全表スキャンの実行は、迅速で問合せのフェッチを改善する場合もあります。 小さな表では、キャッシュを使用してください。
-
SQLヒントを使用して、適切な索引を強制的に使用します。
-
複雑なサブ問合せの使用を避け、必要に応じグローバル一時表を使用します。
-
複数の集計でOracle SQL分析機能を使用します。
-
できるかぎり、WHERE句内で大量のサブ問合せの使用を避けます。 かわりに、外部結合で問合せをリライトしてください。
-
HAVINGおよびIN / NOT INなどのWHERE句条件でグループ関数の使用を避けます。
-
複雑な集計関数では、CASE文およびDECODE関数を使用します。