我有一个简单的数据库结构,其中包含模型和关系:
型号:
关系:
我的问题–我希望能够跟踪用户在给定时间段内(可能是每周,但可能是每天)在小组中执行的活动数量,并且我不知道哪种方法最有效/最有效。实现这一目标。
从理论上讲,我只可以基于created_at
日期属性执行一个查询,以对那些活动进行计数,但是我认为这不是最有效的方式(我错了吗?)
有人知道如何正确构造这样的东西吗?
答案 0 :(得分:2)
根据您提供的关系,您的activity
表具有对user_id
和group_id
的外键引用,您可以获取天。
SELECT a.user_id, a.group_id, count(a.user_id)
FROM activity a
WHERE a.user_id = '123'
AND a.group_id = '1'
AND a.activity_time >= '2019-08-31'
AND a.activity_time < '2019-08-31' + INTERVAL 1 DAY
在user_id, group_id, activity_time
上创建一个组合键,以备将来表大小增加时更快地检索。
请注意,此查询位于MySQL
中。