按位置计算用户RSVP的最有效方法是什么?

时间:2013-08-07 02:39:55

标签: mysql count

我有一个用户表,一个事件表(包含一个城市位置)和一个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项目,这意味着效率非常重要。

1 个答案:

答案 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;

如果您需要在添加新数据时使表保持最新,那么您可能需要触发器。或者,如果您可以忍受延迟,则需要定期重建表格。