数据分析从MySQL开始(Python)(十一、MySQL百万级匹配优化view续)

(算是对第四篇的一个续)

目录

结合 temp 与 view 


第四篇在匹配优化的操作上还是有不足之处,主要用了临时表,update,select操作,可是我竟然忽视了视图view的应用,在更大级别的匹配上发现第四篇的优化仍然无法满足快速的要求;

在部分匹配完成的情况下(例如在十万条匹配了九万九千条还剩一千条的情况下)用  update......'条件'=NULL  AND '条件‘=’条件'  的方法工作量还是太大,而且将临时表的优势弱化了,如果使用视图筛选出列未修改仍为NULL的一千条数据行直接与临时表匹配这就大大节约了运算量)

temp 临时表  修改后不影响原表;

view 视图       基于原表的视图修改后原表也会对应修改

 

结合 temp 与 view 

实际遇到的情况 :十四万条的数据表,在第四篇的前几个匹配下完成了大部分的匹配,还有极少数据大概在400条左右目标列仍为null;

目标:将十四万中的400条数据完成对应匹配修改;

具体操作:

CREATE VIEW VIEW11 AS SELECT `货号` a,`成本价` b FROM `2021-02` WHERE `2021-02`.`成本价` IS NULL;

UPDATE VIEW11,temp22 SET VIEW11.b=temp22.`成本价` WHERE LEFT(VIEW11.a,8)=LEFT(temp22.a,8);

解释:

  • view 为400条未匹配的视图;
  • temp22 为篇四中符合日期的临时表,a为临时表的货号的列名(也不用回看篇四,知道它是简化后的临时表就行);
  • LEFT 取货号的前八位 (因为第八位之后有多余的货号备注,需要截取有用的信息);
  • update 修改 view 视图之后原表随之改变 (避免了与原表万级数据的匹配,一千条);

我王多鱼投500万(view)给冰山(匹配)提提速

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值