我有一个用户表,一个事件表(包含一个城市位置)和一个RSVP表(用户去哪个事件)。我想分析哪些用户参加了特定城市的大多数活动。
我想我需要一个名为user_location_counts的新表,其中我有以下列:user,location和count,其中count是给定城市中给定用户的RSVP的计数。然后,我只需要一个查询:
SELECT user FROM user_location_counts WHERE city = 'XYZ' ORDER BY count DESC.
构建此表的最有效方法是什么?有没有更好的方法呢?我有3M用户和10M RSVP项目,这意味着效率非常重要。
答案 0 :(得分:1)
您可以使用以下查询创建表:
create table User_Location_Counts as
select r.userId, e.city, count(*) as cnt
from rsvp r join
events e
on e.eventId = r.eventId
group by r.userId, e.city;
如果您需要在添加新数据时使表保持最新,那么您可能需要触发器。或者,如果您可以忍受延迟,则需要定期重建表格。