【发布时间】:2020-04-02 16:59:53
【问题描述】:
我正在寻找检索过去 6 个月内有活动的用户 ID 列表的最佳解决方案。
表结构和数据,简化后如下:
CREATE TABLE activities (
id int,
client_id int,
created_at timestamp
);
insert into activities values
(1, 1, '2019-06-01 00:00:00'),
(2, 2, '2019-06-01 00:00:00'),
(3, 1, '2019-07-01 00:00:00'),
(4, 1, '2019-08-01 00:00:00'),
(5, 1, '2019-09-01 00:00:00'),
(6, 1, '2019-10-01 00:00:00'),
(7, 1, '2019-11-01 00:00:00'),
(8, 2, '2019-11-01 00:00:00'),
(9, 3, '2019-11-01 00:00:00');
我需要检索过去 6 个月中每个月至少有一项活动的用户列表。在前面的例子中只是client_id 1
我想加入,但似乎太贵了。为了不偏离和接受你的想法,我不会给你任何可能的解决方案的想法。
请考虑一下,我必须管理一个非常大的数据源(超过 5000 万行)。
有什么快速的想法吗?
【问题讨论】:
-
只有一张数据表为什么要加入?
-
@JNevill 不,这是选择在过去 6 个月内有活动的所有用户,我需要过去 6 个月的每个用户。所以,11 月的活动,10 月的活动等等......
-
在这种情况下,我会将您指向@Strawberry 评论。请包含此示例数据的所需结果,因为不清楚您的目标是什么。
-
@jared 你为什么不呢?
标签: mysql clickhouse