2016-11-03 117 views
1

我有這樣的數據庫,我想計算目前的地方容量。什麼是計算當前容量的最佳方式?

實例:地方max_capaity 64,current_capacity 5.

有人去的地方。 current_capacity應該是6.

我可以創建「current_capacity」列並可以更新它。

但是這是一個正確的方式嗎?或者我應該從那裏查詢A地點的所有人並計算current_capacity? (使用COUNT)

對於大型或活動數據庫,哪一種方法是正確的? (想象一下,2000米的地方,數十億人)

enter image description here

回答

0

你應該有基本的join和聚合開始。這樣的事情:

select p.*, p.max_capacity - u.cnt 
from places p left join 
    (select place_id, count(*) as cnt 
     from user_places 
     group by place_id 
    ) u 
    on p.place_id = u.place_id; 

我不會建議添加一個列,除非你真的必須。爲了維護該列,您必須實施觸發器,以在用戶被分配或從某個地方移除時更新該值。

相關問題