目录
一、业务场景
假设有两张表,一张表是部分用户信息表(user_info),大约有200个用户信息,另一张表是全量用户(大约几百万用户)网站购物信息日志表(info_log)大约有一个亿条的数据信息。此时需要将部分用户信息表(user_info)中200个用户购买服装类的信息拿出进行离线分析。
二、需求分析
业务场景的描述需求为:需要将部分用户信息表(user_info)中200个用户购买服装类的信息全量拿出。这里是一张小表(user_info)和一张大表(info_log)。
思路一:for循环思路(错误思想)
绝对不能使用for循环遍历的思想进行处理,因为for循环需要大约遍历200*100000000次,是比较耗时的一种操作。因为如果一次循环需要0.002ms,就需要分析约2.7h。
思路二:关联表法(正确思想)
select 需要的字段 from user_info t left_join info_log n on t.user=n.user and n.tag='服装类';
这种关联表法的思路比较节省时间,大约使用几分钟的时间就可以将亿级的大表进行关联分析完毕。但是处理极小表的关联,比如两个表都只有几百条数据,也是需要几分钟。所以针对很大量级表的处理使用表关联法提升分析效率非常显著。