日期:2014-05-18  浏览次数:20556 次

大数据量的Update操作
现在有Table1(4千万条记录)和Table2(5百万条记录)
我需要对Table1做Update操作,更新的数据源来自Table2

也就是想要实现下面的操作
SQL code
    Update Table1 Set Subject = a.Subject From
    ( Select ID,Subject from Table2    ) as b
    Where Table1.ID = b.ID

如果单独执行上面的语句,将会是一个漫长而痛苦的过程。

现在想请教各位,有没有什么好的办法解决这个问题。

------解决方案--------------------
SQL code
update table 1 set Subject =b.Subject from table1 a,table2 b
where a.id=b.id

------解决方案--------------------
SQL code

Update Table1 Set Subject = b.Subject From
table1 a,table2 b
Where a.ID = b.ID

------解决方案--------------------
SQL code
    Update Table1 Set Subject = Table2.Subject 
    from Table2  
    Where Table1.ID = Table2.ID

------解决方案--------------------
Update Table1 Set Subject = b.Subject From
( Select ID,Subject from Table2 where id in (select ID from table1) as b
Where Table1.ID = b.ID

上面的语句要保证Table2的ID,Subject 是一一对应的。
------解决方案--------------------
还有阿你怎么一下要更新那么多阿!

能不能想办法相对减少更新的数据呢!

如果看样子不能再优化了
------解决方案--------------------
没什么好办法哦,我也偶尔要做这样的操作,,,可以按什么分成几部分,这样做比较快点,比如按 年,,,月 什么的
------解决方案--------------------
这么大数据量一次update?

我想说也许你的设计有问题……

------解决方案--------------------
探讨
SQL codeupdate table 1 set Subject =b.Subject from table1 a,table2 b
where a.id=b.id



a.id和b.id都添加索引,应该不会很慢

------解决方案--------------------
探讨
SQL codeupdate table 1 set Subject =b.Subject from table1 a,table2 b
where a.id=b.id



a.id和b.id都添加索引,应该不会很慢

------解决方案--------------------


Select ID,Subject from Table2

应该是你这显示500万记录慢吧?

2楼说的,应该不慢吧?