SQL Server – Update A table = B table 的值

摘要:SQL Server - Update A table = B table 的值


我有一个需求,是将A table 的字段值,等于B table的字段值,透过他们相同的 key 值,

因为呈上一个的文章,

我要更新,要20分钟的时间,

所以,我决定干一件事,让数据先insert 到一个temp table

再透过update 一行命令,将A table的字段值,等于 temp table 的字段值。

让整体速度加快。

然后我做了一个实验。

先建立A table、B table

create table test_a (id int primary key IDENTITY(1,1) NOT NULL,data_id varchar(80),data varchar(80));
create table test_b (id int primary key IDENTITY(1,1) NOT NULL,data_id varchar(80),data varchar(80));

然后insert 多笔数据
insert into test_a (data_id,data) values('abcde','test_a');
insert into test_b (data_id,data) values('abcde','test_b');

再用update set from inner join where 的方式将B table的值,放入A table去。

update A set A.data = B.data
From test_a A
Inner Join test_b B 
On A.data_id = B.data_id;

实验结果,可行~~

而这个实验结果,
原本1000笔,大概是需要两分钟时间才会更新完毕。
而我使用这招之后,2000笔,可以再10秒钟结束。

简直是太神奇了杰克~~~
自从使用了这招,哇ㄟ人生是彩色ㄟ~~