2017-06-08 13 views
0

私はC#winForms、SQL Server 2014を使用して市場販売ポイントシステムを構築しています 私の問題は、新しい販売法案を作成するときにプログラムの数量を表示する必要があります それは十分に順番か のために、私は項目 のitem_id、アイテム、Buy_Price、Sell_Price、数量SQL Serverでは、大きなテーブルで「合計」機能が正常に機能しますか?

については、この表を作成したが、ときに、ユーザー編集これは混乱をした場合、彼は、この製品の量を知っている、と見るべきである販売を作りますいくつかの請求書(請求書)を編集する場合、購入手形の数量を編集する 次にpr商品テーブルのoduct量のセルはbuybillsテーブル の量と一致しませんので、私はそれをもう少しダイナミックにしてアイテムテーブル から数量セルを削除し、請求書テーブルを使用してアイテムの数量を取得します 売るアイテム(商品)を検索すると、システムはsumファンクションbuy SQLの文を使用します buy_billsのsum = item_quantity(item_quantity) - sell_billsのsum(item_quantity) は動作しますか?データベースのサイズとレコード数が大きくなると、これは非常に重くなりますか?

+3

パフォーマンスは間違いなくあなたの環境内のデータでテストする必要があります。処理が不合理であると仮定する先験*理由はありません。 –

+0

これは、これまでにユーザーが請求書を編集したものです。数量はこれらの請求書の合計になります – XRushdy

答えて

0

ここでの問題はSUM関数とは関係がありません(クエリの中に入れたもので一般的にはすばやく集計されますが使用可能な量を検出するという概念があります)。複数のセールスポイントがあると仮定すると、何らかの形式の並行性制御を提供しないと、製品の正確な利用可能な量を得ることは不可能になります。

したがって、商品の購入または販売の履歴があるテーブルの合計を使用することができます。しかし、あなたが変更を受け入れる前に、他の売り手が同じ量を(売る)ことを防ぐためにロックをかける必要があります。あなたが1つの販売をコミットした後、他の売り手があなたが現在提示されている商品数量をリフレッシュすることを保証する活動を続けることを許可するかもしれません。

このシナリオは、マルチユーザービジネスアプリケーションで発生する可能性のある基本的なシナリオの1つです。

ので、締結すること、既存の在庫があなたのアプリケーション

  • は保留中のリフレッシュに合う方法で
  • SUMを下げることができないことを確信している時間で

    1. ワンポイントを提供します新しい数量での販売
  • +0

    あなたはアイテムの数量を得るこの計算を行うことは問題ではないと言っている、私は恐れている。なぜなら、ユーザはこの文を一日中繰り返し使用し、あなたが知っている次の注文を取るためには速くなる必要があるから、だから、長い時間が経過すると、数量を得るために計算する必要がある膨大な数のレコードがあります。そのときのパフォーマンスは何か分かりません。これは私のステートメントの例です – XRushdy

    +0

    SELECT SUM(すべての入力) - SELECT SUM(すべての出力) – XRushdy

    +0

    パフォーマンスの観点から回転テーブルからSUMを使用するアプローチは、トランザクション数とユーザー数によって異なります。あなたはこの点に関していくつかの期待を持っているべきです。数十人または数百人のユーザーがいると思われる場合は、アイテムごとの合計を集計するエンド・オブ・デイ・プロセスを検討し、SUMの1日の売上高のみを考慮してください。より大きな問題は、2人以上のユーザーが同時にアイテムごとに現在の合計をピックアップして販売する能力です。これが処理されない場合、ユーザーは自分の持っている以上に売ることができます。 –

    0

    私はそれが少しよりダイナミックにし、アイテムテーブルからの数量のセルを削除し、法案のテーブル手段を用いて任意の項目の数量を取得したい場合は、システムの使用を販売するアイテム(製品)のためのユーザーの検索sum_funcationはSQL文の数量= buy_billsのsum(item_quantity) - sell_billsのsum(item_quantity)は動作しますか?

    構文が正しいと仮定すると、sum関数を使用して列を合計することができます。 1つの文で2つの合計を減算することができます。すなわち、SUM(Column_1) - SUM(Column2)AS Column3。これは、他のすべてが正しく設定されていることを前提としています。

    これは、データベースのサイズとレコード数が大きくなると非常に重くなりますか?

    これはデータベース設定に対して100%であり、ここでは対応できません。データベースが大きくなると速度が低下する可能性があります。しかし、データベースが正しく設定されていれば、それほど多くはないはずです。

    また、データをプリロードすることでその問題を回避することもできます。

    +0

    何を意味するのですか?あとでデータをプリロードすることでその問題を回避することもできます。* – scsimon

    関連する問題