咨询个 SQL 数据去重的问题

查看 97|回复 8
作者:kkbear   
目前有个流水表,大几千万的数据,可以简化如下:
会员号( member_id), 流水日期( trans_date)
有个需求,需要找出指定日期段内的会员数量(去重)
这个日期段时灵活的,可能时本月,本周,最近 7 天,最近 30 天
有什么方法能优化
1. 没办法根据日期段做汇总结果的统计表,因为日期段没有任何规律
2. 数据库为 mysql,目前用的 sum(distinct member_id) where trans_date between
wenxueywx   
写错了? 统计数量怎么会用 sum 应该用 count 吧
没理解根据日期做汇总结果的统计表什么意思
asAnotherJack   
怎么是 sum 呢,不该是 count 吗
kkbear
OP
  
写错了,是 count
@wenxueywx 统计表,也可以理解成缓存表就行
ZZ74   
优化 ?现在是碰到什么问题了 查询慢?
sagaxu   
按一个月不超过 300 万数据增量估算,有联合索引(trans_date, member_id),低频词的在从库里查 1 个月也 OK
8355   
我倾向于用其他数据库做 例如 clickhouse 或着其他大数据方向的数据库计算,并不是用关系型数据库。
如果可以接受不是很精准的话可以用布隆过滤器
x1n04   
type 看看,再加点索引呢。
wenxueywx   
实时查询就行了,没必要将汇总结果缓存吧,主要在 trans_date 字段上设计索引。如果 select 没有其它字段的话就加上 member_id 做个联合索引,直接使用覆盖索引查询。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部