2017-11-04 7 views
2

と比較:減算またはこれらのテーブルでは限界

WorkshopID | WorkshopName | WorkshopLimit 
    1   Workshop A   10 
    2   Workshop B   20 
    3   Workshop C   30 
    4   Workshop D   40 
    5   Workshop E   50 

workshop_participants

ParticipantID | RegistrantID | WorkshopID 
     1    1    1 
     2    1    2 
     3    2    3 
     4    3    2 
     5    3    5 
     6    4    1 
     7    4    4 
     8    5    4 

ワークショップは、それだけのためにWorkshopLimitの数を減算して更新する方が速いです各登録、または特定のワームの参加者の総数を数えるkチェストをWorkshopLimitに(WorkshopLimitを更新せずに)に引きますか?

この使用例は、特定のワークショップの残りのスロットを確認する場合です。

+0

特定のワークショップの参加者の総数をカウントし、それをWorkshopLimitに引きます(WorkshopLimitを更新せずに)。 –

答えて

0

残りのオープンを計算するCOUNT(...)などの集計機能を含む、より複雑なクエリを使用するよりも、ワークショップの残りの空席を確認するためにdatarowから単純な値を読み取ることがSELECT WorkshopLimit FROM workshops WHERE id = 42のような単純なselect文を実行する方が速いですいつでも要求に応じて座席を確保できます。

ただし、各登録時にworkshopsテーブルの残りのオープンシートの値を更新するか、必要なときに残りのシートを計算する場合は、速度にはほとんど関係しません。彼らは両方とも、どちらか一方のアプローチを使用するあなたの決定に関連するには速すぎます。

TL; DR =それは問題ではありません。

0

あなたのWorkshopLimitの厳格さによって異なります。過剰登録が禁止されている場合は、WorkshopLimitを更新すると簡単にルールを守ることができます。 WorkshopLimitが0より小さい場合は、トランザクション内でWorkshopLimitの登録と更新を行い、トランザクションをロールバックして登録をキャンセルします。

過剰登録が許可されている場合は、両方の解決策が許容されます。あたかもデータ量が膨大でないかのように、パフォーマンスの違いは軽微でなければなりません。

関連する問題