在mysql数据库中有三张表,是通过抓取另一个数据库的数据,需要通过关联生成一张视图表,再通过Python处理将视图表生成实体表,现在的问题是三张基础表太大,生成的新表所需时间太长,应该如何解决?
基础表1:行:1633888 行,数据长度:496.00 MB,数据抓取时长:约20分钟
基础表2:行:94866 行,数据长度:12.52 MB,数据抓取时长:约1分钟
基础表3:行:1684084 行,数据长度:114.70 MB,数据抓取时长:约10分钟
生成的新表:行:1378266 行,数据长度:220.80 MB,数据生成时间(通过Python处理将视图表生成实体表):2天4小时
视图表的基本SQL逻辑:
select 需求字段, 通过 case WHEN 更改字段内容的字段,if判断字段内容生成的新字段(6个)
from (SELECT * FROM 基础表1 where 筛选条件) left join (SELECT * FROM 基础表2 where 筛选条件) left join (SELECT * FROM 基础表3 where 筛选条件)
我的需求是:将视图表生成实体表的时间缩短至2小时以内
PS:基础表中数据存在更新情况,所以表更新需要进行全量更新