0

SQL Serverに基づいていくつかのCrystalレポートを作成します(通常は2005年または2008年)。大きく分けて2種類のレポートがあります。

a)表形式のレポート-テーブル内の一部のデータ(請求書リストなど)を表示しますb)ドキュメントレイアウト-特定の形式でデータを表示します-通常は1つまたは2つのメインテーブルから-およびいくつかのセカンダリテーブル(請求書など)

クリスタルで直接テーブルを使用することもあります。または、SQLでプロシージャを作成し、そのプロシージャを使用します。1つの請求書は、通常、約10〜12のテーブルを参照できます。これらのほとんどは、左外部結合を使用してプライマリ請求書テーブルにリンクされています。

どのオプションが優れているか-Crystalでテーブルを使用する(そしてCrystalにSQLクエリを作成して実行させる)-またはクエリを作成する-そしてCrystalでそのクエリを使用するよりも優れています。どちらがより良いパフォーマンスを提供しますか?

4

3 に答える 3

1

「データベース エキスパート」によって生成されたクエリと、コマンドに追加された同じ SQL との間にパフォーマンスの違いはありません。1 つの注意点: レコード選択式を解析してデータベースに送信できることを確認してください (適用されたフィルターWhileReadingRecordsは、純粋な SQL フィルターよりも明らかに効率が低下します)。

「データベース エキスパート」を好む理由:

  • v 2008 より前では、コマンド オブジェクトは多値パラメーターをサポートしていませんでした。
  • 管理しやすい(やや主観的)

コマンドを好む理由:

  • ヒントを追加できます
  • SQL をよりきめ細かく制御できます (インライン ビュー、CTE、より複雑な JOIN、サブセレクトなど)。

個人的には、ストアド プロシージャは最小限のパフォーマンス上の利点しか提供しないため、避けようとしていますが、開発と保守により多くの投資が必要になります。

結局、パフォーマンスに代わるものはありません。両方の方法でクエリを実行して、結果を測定してみてください。

于 2012-11-05T18:08:36.027 に答える
0

自分でコーディングすると、ほとんどの場合、より高速に実行されます。結局のところ、データがどのように見えるかはあなたが知っていますが、Crystal はそうではありません。また、Crystal では実行できない手動クエリ (ウィンドウ関数など) で実行できることもあります。

于 2012-11-03T19:23:44.763 に答える
0

クリスタルは舞台裏でクレイジーなことをする傾向がありました。[データベース] メニュー オプションの下にある [SQL クエリの表示] を表示して、作成される内容を確認できます。自分で簡単に最適化できるので、SQLでクエリを書く方が簡単だと思うなら。また、SQL で計算/数式フィールドを実行して、Crystal を表示インターフェイスとして使用することも好みます。Crystal にロジックを配置する場合は、返されるすべてのレコードに対してそのロジックが実行されていることを覚えておいてください...したがって、式からレコードを除外する条件がある場合は、最初にそれを配置して、計算に費やされる時間を制限します。

于 2012-11-05T16:37:52.320 に答える