Update关联查询不走索引,效率低下

文章讨论了一个SQL更新查询的问题,原始查询由于不走索引导致执行时间过长。通过分析,提出了优化策略,将更新语句与子查询结合并加入额外的WHERE条件,实现了从6小时到秒级的执行速度提升。总结了影响索引使用的多种情况,包括选择性弱、字段类型不匹配、统计信息过期、NULL处理、通配符、不等于操作符和函数运算等。
摘要由CSDN通过智能技术生成

   优化一个sql,就是有A,B两个表,要利用b表的字段更新a表对应的字段。形如

Sql代码  

  1. update A set A.a=(select B.b from B where A.id=B.id);  



原SQL

updatepntmall_rptpoint_detail a set a.scrm_rptpnt_processed=(

select distinctb.scrm_rptpnt_processed  frompntmall_rptpoint_detail_tmp b where a.pntmall_rptpnt_id=b.pntmall_rptpnt_id

);


b表中只有1条数据,a表中有37万条数据,应用逻辑为更新a表中id和b表相同的

这一条SQL执行了6小时未执行完,执行计划显示为全表扫描,也就是说,虽然执行1条SQl,但执行update个过程中将37万条数据进行扫描,直到倒找相同的id进行更新


尝试过hit强制走索引,也不理想,where条件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值