sql优化-记一次生产n小时的update语句优化到1秒内的全过程

近期生产业务中,有一批导入数据,数据量大约16万多,由于需要做树查询,涉及一个层级关系维护。前期,实施维护的时候由于sql问题,导致除一级数据外的下级数据(总共六级)大量维护出错,导致现在需要将这16万数据层级关系全部重新维护。
表中,有一个编码字段(以下用task_code表示),同时维护其父项的task_code(一下称parent_task_code)。
现任务是需要将这16w多的数据在表中找到每个数对应的父项目的编码,然后将父项目的id维护到当前数据的parent_id中去。

原sql是这样的
在这里插入图片描述

在这里插入图片描述
由于导入数据id是手工维护的,主键id都是以LIGZ为开头的生成的流水号,所以sql意思是,首先根据id定位出所有的导入数据,然后由于一级任务不需要维护父任务,所以过滤掉所有的一级任务,然后由于需要有一个PROJECT_CODE的过滤条件,所有过滤掉所有没有维护PROJECT_CODE(其实基本上都是有PROJECT_CODE的)的数据,可以看到需要更新的数据大概是13w多。

先不看sql,我们来看下执行计划

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值