(算是对第四篇的一个续)
目录
第四篇在匹配优化的操作上还是有不足之处,主要用了临时表,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)给冰山(匹配)提提速