2012-02-14 51 views
1

私は、SQLサーバー在庫データベースの在庫/売上レポートを生成するページを設計することに取り組んできました。開始在庫、在庫終了日、納入品目、与えられた日または日の範囲。日付範囲linqクエリの効率

最後に、forループを使用して、統計が必要な日数の範囲を調べ、クエリから返される毎日の統計の実行回数を維持します。

パーツテーブルには、インベントリ内の各アイテムの現在の在庫を追跡するquantityという名前のフィールドがあります。配送テーブルには、アイテムが配送された日時のレコードが格納され、販売テーブルには、販売日時のレコードが格納されます。

特定の制限のため、現在の在庫数量を差し引いた数量を差し引き、その数量に売り上げ数量を加算することで、特定の商品の特定日の終了在庫を把握することができましたその日のために。私は次に、必要な日付の範囲内で、毎日このx回の回数を実行し、合計のランニング・タリーを維持します。

1日の統計情報を取得するには、次のクエリが適切に実行されますが、統計情報が一定の日数に必要な場合は、パフォーマンスが大幅に低下します。私が言ったように私はlinqにあまり堪能ではなく、本当に次のクエリのパフォーマンスを向上させるための助けに感謝します。

編集:コードは、パフォーマンスを向上させる

答えて

2

最良の方法は、例えば、ビューを作成することにより、データベースへのすべてのこのロジックを移動させることである壊れていました。それは、データを結合して掘り下げることに関して、DBよりも速いことは非常に難しいです。

+0

私はこのルートに行かなければならないかもしれないと思っていましたが、私の現在のソリューションを最適化する方法があれば。 –

+0

@Steve要するに、そうではありません。あなたはその仕事に間違ったツールを使用しようとしています。 – Gent

2

この種の複雑なクエリの場合、LINQは単にジョブの正しいツールではありません。 「統計」ビューを使用すると、個々の統計情報を取得するために必要なものを簡単にクエリできます。集計はそこから簡単に取得する必要があります。