SQL批量更新 关系表更新
很多人在做数据的批量更新时..如果更新的内容是从其他表查出来的..很容易这么写..
UPDATE TABLE1 SET COLUMN1=(SELECT SUM(SOMETHING) FROM TABLE2 WHERE COLUMN2=TABLE1.COLUMN2)
这样的结构对于一般的小数据更新当然是没问题的..因为体现不出劣势..
但是到了数据量大了的时候..特别在后边的查询时..量大并且结构复杂的时候..
那一定会自食恶果..你就等吧..一条T-SQL执行个把小时..甚至计算速度后..发现要执行一天多的时候..就光剩下瞪眼了..
在这里严重推荐一下这种写法..
UPDATE TABLE_1
SET COL_1=TT2.RESULT_COL_1,COL_2=TT2.RESULT_COL_2
FROM TABLE1 AS TT1
INNER JOIN (SELECT RESULT_COL_1,RESULT_COL_2 FROM TABLE_2) AS TT2
ON TT2.RELATION_COL=TT1.RELATION_COL
上边的结构在查询上只进行一次..更新进行的是最小次数..就是查询出结果的行数..
这个结构在一个同事那里..把他原来要进行27个小时的运算..缩短到了2分半钟..威力可见一斑..
SQL批量更新 关系表更新的更多相关文章
- SQL:利用多表更新优化子查询
原SQL: update bi_data.order_list_wxset is_start='1',proc_time=now()where 1=1and is_end='0' and 交易时间&l ...
- SQL批量删除用户表(先删除所有外键约束,再删除所有表)
--批量删除用户表 --1.删除外键约束DECLARE c1 cursor for select 'alter table ['+ object_name(parent_obj) + '] d ...
- 用sql从一张表更新数据到另外一张表(多表数据迁移)
update TBL_1 A, TBL_2 B, TBL_3 Cset a.email=c.email_addrwhere a.user_id=b.user_id and b.un_id=c.un_i ...
- oracle mysql sql 根据一张表更新另一张表
update CDINFO.Dept_Dict tab1 set PART_FLAG = (select PART_FLAG from DICT.DEPARTMENT_DICT@zyhis4 tab2 ...
- SQL笔记----在一个关系表中操作列
使用alter关键字,可以为一个表添加新的列. 比如: 给Persons的表中添加一列,名字为Birthday,类型是date. ALTER TABLE Persons ADD Birthday da ...
- SQL 批量删除数据表
) while(exists(select * from sysobjects where name like '表名前缀%')) begin select @name=name from sysob ...
- EF架构~关于多对多关系表无法更新与插入的问题
回到目录 在EF里,我们设计模型时,会设计到多对多关系,在EF里会把这种关系会转成两个一对多的关系表,这是比较友好的,因为多对多来说,对于业务本身没什么意思,所以隐藏了,没什么坏处,但对于这个隐藏来说 ...
- SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int
--SQL批量更新数据库中所有用户数据表中字段类型为tinyint为int --关键说明:--1.从系统表syscolumns中的查询所有xtype='48'的记录得到类型为[tinyint]的字段- ...
- SQL批量更新数据
SQL批量更新数据 step1:导入Excel数据, 具体见百度.注意点:一列中含有float型数据和文本数据的时候,导入要将Excel中的表格属性改成文本,或在数字项目前加个单引号. step2 ...
随机推荐
- sys.dm_os_waiting_tasks 引发的疑问(中)
上一篇我们说了一下sys.dm_exec_requests 和 sys.dm_os_waiting_tasks 在获取并行等待的时候得不同结果,这一篇我们谈论下我的第二个疑问:为什么一个并行计划(4线 ...
- Kubernets搭建Kubernetes-dashboard
接上篇文章,在已经部署好Kubernetes的基础上部署kubernetes-dashboard,它是官方提供的用户管理Kubernets集群可视化工具:部署dashboard其实和在kubernet ...
- win 7下建立FTP
1.安装FTP服务 鼠标桌面右击个性化-卸载程序-打开或关闭windows功能 2.在IIS控制面板里添加FTP站点 下一步 下一步 鼠标右击 下一步 下一步 3.配置ftp站点 4.测试站点是否正常 ...
- TB6612FNG电机驱动模块的简单使用
TB6612FNG电机驱动模块的简单使用: 文 小波 QQ463431476 博客 http://www.cnblogs.com/xiaobo-Linux/
- xshell不能输入中文,显示为??
不知不觉间发现自己使用xshell的时候不能输入中文了,输入的中文会变成"??",开始以为是编码问题,看了一下编码设置后发现没有任何问题,而且显示中文没有出现乱码问题,只是在输入的 ...
- OnDraw函数
本文仅用于学习交流,商业用途请支持正版!转载请注明:http://www.cnblogs.com/mxbs/p/6219428.html 方法一.对字符串直接赋值 在View类中定义了OnDraw函数 ...
- CQRS框架:AxonFramework 之 Hello World
Command Query Responsibility Segregation,CQRS 这个架构好象最近博客园里讨论得比较多,有几篇园友的文章很有深度,推荐阅读: CQRS架构简介 浅谈命令查询职 ...
- [LeetCode] Sum of Two Integers 两数之和
Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Exam ...
- [LeetCode] Summary Ranges 总结区间
Given a sorted integer array without duplicates, return the summary of its ranges. For example, give ...
- [LeetCode] Count and Say 计数和读法
The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...