两种关联update的性能对比

a表只有126条记录,b表有140万记录
1.

/*card_no必须是主键*/
Update ( Select (Case a.status When '挂失' Then '004' When '卡找回' Then '000'
When '取消用卡资格' Then '008' When '已还款' Then '000' End) status_new,
b.card_status,
(Case When a.status='取消用卡资格' Then 1 Else 0 End) increment_times,
b.suspend_times
From etl_daily_cardstatus a,etl_custcard b
Where a.card_no=b.card_no)
Set card_status=status_new,suspend_times=nvl(suspend_times,0)+increment_times;

这样写竟然需要3秒多才能update完,a.card_no,b.card_no必须是主键,不然会报错:ora-01779:cannot modify a colum which maps to non key-preserved table

2.

Update etl_custcard b
Set (b.card_status,b.suspend_times)=
(
Select (Case a.status When '挂失' Then '004' When '卡找回' Then '000'
When '取消用卡资格' Then '008' When '已还款' Then '000' End) status_new,
(Case When a.status='取消用卡资格' Then 1 Else 0 End) increment_times
From
(Select * From (Select card_no,status,
dense_rank() over (partition by card_no order by seqno desc) seq From etl_daily_cardstatus )
Where seq=1 ) a Where a.card_no=b.card_no )
Where card_no In (Select a.card_no From etl_daily_cardstatus a)

因为a表card_no不是主键了,所以改成这么写,第一次执行要了0.39秒,后面执行在0.016-0.03秒之间。
第二种写法应该是 in 这个where条件起了很大的作用。
MySQL 8.0 UPDATE LEFT JOIN 实战:3种关联更新场景与性能对比 本文深入解析MySQL 8.0中UPDATE LEFT JOIN的三种典型应用场景,包括学生-班级管理系统、电商订单-商品库存联动和用户行为日志聚合更新。通过实际案例和性能对比测试,展示了多表关联更新的高效实现方法及优化策略,帮助开发者提升数据库操作效率。 阅读详情

相关推荐

MySQL批量UPDATE的两种高效实现方案与性能优化

数据库批量更新是提升系统性能的重要技术手段,其核心原理是通过减少网络往返和SQL解析开销来实现高效数据操作。在MySQL中,CASE WHEN条件表达式和临时表关联是两种典型的批量更新实现方式,前者适合中小规模数据更新,后者则更适合处理超大批量数据。从技术价值来看,合理的批量更新方案可以将执行效率提升数十倍,特别是在电商库存更新、用户信息批量维护等高频场景中效果显著。结合MyBatisPlus等ORM框架,开发者可以更便捷地实现安全高效的批量操作,同时需要注意事务控制、批次拆分等工程实践要点。本文重点分析的

weixin_29202687的博客 291

oracle关联表更新的两种方式及比较

一、oracle关联表更新的方式一: 直接update 示例:update A set (A.column1,A.column2)=(select new_column1,new_column2 from B where exists match_condition) where exists(select1 from B where exists match_condition); oracle关联表更新的方式二: merge into 示例:merge into A using B ...

牛尚小的博客 1318

SQL Server UPDATE FROM 子句实战:3种跨表更新场景与性能对比

本文深入解析SQL Server中UPDATE FROM子句的三种跨表更新场景,包括直接JOIN更新、派生表更新和CTE递归更新,并通过性能测试对比不同方法的效率差异。文章还提供了优化建议和常见错误解决方案,帮助开发者高效实现复杂数据更新操作。

weixin_32075843的博客 253

mysql循环更新数据_大批量更新数据mysql批量更新的四种方法

mysql 批量更新如果一条条去更新效率是相当的慢, 循环一条一条的更新记录,一条记录update一次,这样性能很差,也很容易造成阻塞。mysql 批量更新共有以下四种办法1、.replace into 批量更新replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y');2、insert into ...on duplicate ...

weixin_31981135的博客 5162

ORACLE_UPDATE_语句语法与性能分析

ORACLE_UPDATE_语句语法与性能分析

手把手教你用MOS管设计双电源自动切换电路(附零压降方案)

本文详细介绍了使用MOS管设计双电源自动切换电路的完整方案,包括基础电路拓扑、零压降优化设计及实战调试技巧。针对外接电源与电池供电的无缝切换需求,提供低损耗MOS管选型建议和性能实测数据,帮助工程师解决传统二极管方案的压降与漏电问题。

h0i1j2k3l的博客 1452

oracle中merge into 与update的性能对比

oracle中merge into 与update 性能对比起由updatemerge into测试结果对比:merge语句的语法官方的例子:后记 起由 现在有一个表WX_USER_Test,一个Excel。业务要求excel中的两列插入到表中,数据量为11522 条。 项目经理让我把sql写了给他,因为是生产数据的更新,大家都比较慎重。(跨年夜动了三万条数据,涉及三个系统,但仅仅是查询,不足为奇)。 我非常自信,先创建了临时表WX_USER_TMP,将excel中的数据插入,然后使用update批量更新语

xunboang0059的博客 1万+

在 Kubernetes 上部署 Label Studio

Label Studio 是一款开源的数据标注工具,支持多种标注任务,如文本标注、图像标注、音频标注等。

啥都会一点 671

22、UPDATE多表关联更新

MySQL 可以基于多表查询更新数据。对于多表的 UPDATE 操作需要慎重,建议在更新前,先使用 SELECT 语句查询验证更新的数据与自己期望的是否一致。 下面我们建两张表,一张表为 product 表,用来存放产品信息,其中有产品价格字段 price;另外一张表是 product_price 表。现要将 product_price 表中的价格字段 price 更新为 product 表中价格字段 price 的 80%。 操作前先分别查看两张表的数据,SQL 语句和运行结果如下: mysql>

you can you up up up的博客 1万+

3-RRR并联机器人结构详解:从运动学到奇异点分析(附MATLAB仿真代码)

本文详细解析了3-RRR并联机器人的结构设计、运动学建模及奇异点分析,并提供了MATLAB仿真代码。通过对称性设计和可分析性,3-RRR结构成为教学与研究的理想对象。文章从基础杆件参数设置到奇异位形的实时捕捉,深入探讨了机构运动的数学本质,并分享了仿真调试中的实用技巧,助力工业自动化和精密控制应用。

sunny的博客 369

微信小程序OCR身份证识别实战:从拍照到信息提取全流程解析

本文详细解析了微信小程序中OCR身份证识别的全流程实现,从环境配置、拍照上传到OCR核心识别及安全优化。通过微信开发者工具和OCR插件,开发者可快速构建高效的身份信息采集系统,提升用户体验和数据安全性。重点介绍了图像处理、加密传输及混合云架构等企业级解决方案。

j0k1l2m3n的博客 458

别再写错SQL了!SQL Server两表关联更新UPDATE的两种写法与实战避坑(附完整示例)

本文深入解析SQL Server中两表关联更新的两种核心写法(FROM子句关联与子查询方式),通过实战案例对比其差异与适用场景,帮助开发者避免数据更新中的常见陷阱。特别针对sqlserver的update操作,详细讲解如何处理未匹配记录、多值冲突及性能优化策略,并附完整示例代码。

weixin_30772105的博客 396

【报错】raise pickle.UnpicklingError(_get_wo_message(str(e))) from None_pickle.UnpicklingError: Weigh

File "/opt/conda/envs/py_3.12/lib/python3.12/site-packages/torch/serialization.py", line 1470, in load raise pickle.UnpicklingError(_get_wo_message(str(e))) from None _pickle.UnpicklingError: Weights only load failed.

静谧、淡雅 786

Hibernate_面试中最常考察的知识点整合

from: http://jianfulove.iteye.com/blog/1836729   一、简述 Hibernate 和 JDBC 的区别、优缺点 JDBC与Hibernate在性能上相比,JDBC灵活性有优势。而Hibernate在易学性,易用性上有些优势。当用到很多复杂的多表联查和复杂的数据库操作时,JDBC有优势。相同点:◆两者都是JAVA的数据库操作中间件。◆两者对于数...

ALL TECHNOLOGIES ARE CLOUDS 118

用miniconda建立PyTorch、Keras、TensorFlow三个环境

如果还没有安装Miniconda,请从[Miniconda官网](https://docs.conda.io/en/latest/miniconda.html)下载合适的版本并进行安装。如果遇到问题,可以通过编辑`~/.condarc`文件来临时禁用某个源,或者通过`conda config --remove channels`命令来移除配置的镜像源。要切换到不同的环境,先使用`conda deactivate`命令退出当前环境,再用`conda activate 环境名称`命令激活另一个环境。

数字人生 2464

运行codex时出现登录失败:failed to start login server: 以一种访问权限不允许的方式做了一个访问套接字的尝试。 (os error 10013) 解决方案

本文主要介绍了运行codex时出现登录失败:failed to start login server: 以一种访问权限不允许的方式做了一个访问套接字的尝试。 (os error 10013) 解决方案,希望能对使用xx的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 10万+

oracle关联更新效率,关联UPDATE的各种方法总结

oracle更新语法:1.一般语法update tab set col = .... [where ...] =后可以有子查询,但是必须对于tab的每一列返回唯一一行与之对应,where是需要更新的表,部分更新必须加,否则相关子查询的更新会把没有匹配的更新为null,如:update tab a set a.col=(select b.col from b where a.id=b.id)wh...

weixin_26808205的博客 1762

AWS DevOps Agent 完全指南

AI 驱动的 SRE 队友,7×24 自主调查告警、定位根因、生成修复方案、预防未来故障。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 385

KingbaseES 两表关联Update的两种写法与性能

【本文正在参与炫“库”行动-人大金仓有奖征文】 活动链接:https://marketing.youkuaiyun.com/p/98bd30353e7cb998b6070a89e8b91edb 熟悉oracle 的人都知道,对于两表的关联更新,其执行计划主要有 Filter 和 Outer Join 两种方式。对于大批量数据的update,Join方式明显是更优的选择。KingbaseES 和 Postgresql 也支持两种方式的关联update,语法上采用两种不同的写法。 以下以例子的形式展示两种写法及性能上

lyu1026的博客 2329

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SELECT FOR UPDATE性能对比:传统开发vsAI优化

上完成这个项目特别顺畅,不用配环境就能直接运行测试脚本,实时对比结果的功能也很直观。最方便的是部署过程——点击按钮就能把测试平台变成可公开访问的演示页面,同事们都夸这个对比效果一目了然。如果你也在处理类似的数据库并发问题,不妨试试这个思路。毕竟在保证数据一致性的前提下,性能每提升一点,服务器成本可能就省下一大截。的AI辅助功能来优化这个流程,结果让人惊喜——不仅开发效率提升明显,生成的查询性能也远超预期。这次测试最让我意外的是,AI不仅能提高开发速度,还能产出质量更高的解决方案。

SilverfoxOwl19的博客 936

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

金仓数据库KingbaseES 两表关联Update的两种写法与性能

熟悉oracle 的人都知道,对于两表的关联更新,其执行计划主要有 Filter 和 Outer Join 两种方式。对于大批量数据的update,Join方式明显是更优的选择。KingbaseES 也支持两种方式的关联update,语法上采用两种不同的写法。以下以例子的形式展示两种写法及性能上的差异。这些例子同时通过KingbaseES V8R6环境验证。

arthemis_14的博客 2410

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

多表关联的update语句

ORACLE UPDATE 语句语法与性能分析的一点看法  为了方便起见,建立了以下简单模型,和构造了部分测试数据:  在某个业务受理子系统BSS中,  --客户资料表  create table customers  (   customer_id   number(8)    not null,  -- 客户标示   city_name     varchar2(10) not null,  

solendo 1133

Oracle 关联更新 update

Oracle 关联更新 update

Hehuyi_In的博客 1万+

oracled update_oracle中update语句的性能优化

Oracleupdate语句的性能优化一、update语句的语法与原理1,语法单表:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值如:复制代码代码示例:update t_join_situation set join_state='1'whereyear='2011'更新年度为“2011”的数据的join_state字段为“1”。如果更新的字段加了索引,更新时会重建索...

weixin_32052253的博客 2435

【MySQL】如何优化 SQL UPDATE 语句以提升性能

通过以上几个步骤,我们可以显著提升UPDATE语句的执行效率。具体来说,使用JOIN替代逗号分隔、为关键字段创建索引、分批更新数据,以及利用EXPLAIN分析执行计划,都是非常有效的优化手段。优化 SQL 是一个需要结合实际数据量和应用场景的工作,希望本文的思路能够帮助你在项目中更好地优化 SQL 语句,提高数据库的运行效率。

linjiuxiansheng的博客 2155
上一篇: 删除带外键约束的数据
下一篇: 看房实录
eyejavaeye
博客等级 码龄20年 74粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值