2016-11-03 84 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; 

我不会建议添加一个列,除非你真的必须。为了维护该列,您必须实施触发器,以在用户被分配或从某个地方移除时更新该值。

相关问题