2009-05-06 23 views
1

私は実際にどのように処理するかについて迷っています。 私は非常に大きなデータベースを持っており、私がアクセスしているテーブルは約です。 600,000レコード。このデータベースには、アカウンティングアプリケーションを使用してアクセスします。アカウンティングアプリケーションは、このレポートがデータベースにアクセスするSQLクエリをレポートに提供します。Crystal Reports - 非常に大規模なデータベース、非常に長い処理時間

私のレポートには、レポートヘッダーに配置された制限を持つリンクされたサブレポートがあります。このレポートを実行すると、基本クエリを使用してリフレッシュする平均時間は36分です。クエリに2つ以上のアイテムを追加する場合、レポートには2.5時間かかります。 - 何の違い

  • (残りの式を除去することは時間の違いはありません)ほとんどの数式を削除しない

    • を唯一絶対に必要でアイテムを残してレポートをクリーンアップ:ここ

      は、私が試したものですSQLクエリを編集しようとしました - 課金アプリケーションのために許可されていませんでした

    • サブレポートとメインレポートを反転しようとしました - うまくいきませんでした
    • 他のグループを追加 -
    • が一時ディスク領域の不足のためにすべてのサーバーをチェックするに違い - -
    • は、サブレポート「オンデマンド」しようとした無問題 -
    • 削除グループをフェレンスない
    • はパラメータをチェックしていない変更(離散対範囲)を、それそれはそうでなければならない
    • サーバ上でグループ化するなどの試みをしました。 - 違いなし
    • レポートには2回のパスが必要です。私は1つのパスを失敗に終わらせようとしました。

    欠けているものがあります。

    通常のクリスタル機能を使用してレポートに他の変更が加えられていないようです。すべての600,000レコードを通過することなく、データへのアクセスを高速化する方法はありますか?このデータにアクセスするSQLクエリは長く、多くの要求があります。私が変えることができるものではありません。

    これらのリクエストを無効にするもの(式?)を追加できますか?私は今すぐに到達しています...

  • +0

    アプリケーションがクエリをレポートに渡すのに奇妙です。通常、データを渡すか、レポートにクエリが渡されます。 – dotjoe

    答えて

    1

    私たちが成功したことのいくつかは、データベースにインデックスを追加し、テーブルをレポートにインポートするのではなく、代わりに目的の結果を取得するストアドプロシージャを書きました。

    1

    インデクスとストアドプロシージャが、データベースとの人生の一部になるまで非正規化に到達する必要がある場所を取得できない場合、あなたのニーズに合わせてテーブルを最適化したMIデータベースを作成することができます。本番からMIデータベースにデータを抽出できるデータ変換スクリプトがあります。 oracle/msの内容に応じて、これを行うためのツールがあります。

    +0

    +1これは別の良いアイデアです!そして私たちもやったことがあります。 – mattruma

    0

    SQLクエリは何ですか?その場合は、会計アプリケーションの外にレポートを移動し、クエリをデータベースエキスパートのコマンドに直接貼り付けることができます。私は、いくつかのケースで私が扱っている別のアプリケーションとこれを行う必要がありました。

    1

    私たちは、課金システムでCrystal Reportsを使用しており、データベースには完了までに1.5時間以上かかるクエリがありました。これは、レポートのレンダリング/書式設定も考慮に入れません。

    Materialized Viewsを作成し、クライアントに強制的に毎日更新させました。マテリアライズド・ビューは、基本的に、戻されたデータセットを保持するデータベース・ビューです。データセットは、リフレッシュするよう明示的に指示しない限りリフレッシュされません。

    関連する問題