日期:2014-05-17  浏览次数:20499 次

大数据量如何快速更改表的字段值AA.sn=BB.sn,CC.AA_id=AA.id,现在要求把CC.AA_id换成BB.id,请高手指点,谢谢
大数据量如何快速更改表的字段值AA.sn=BB.sn,CC.AA_id=AA.id,现在要求把CC.AA_id换成BB.id,请高手指点,谢谢

我有表AA,字段AA.id,AA.sn,AA.name,AA.other
表BB,字段BB.id,AA.sn,BB.name,BB.other
表CC,字段CC.id,CC.AA_id,CC.info

其中AA.sn=BB.sn,CC.AA_id=AA.id,

现在要求把CC.AA_id换成BB.id,即CC_.AA_id=BB.id,请高手指点,如何能够快速把CC.AA_id换成BB的id

因为数据量较大,数据量在200万条左右,有时执行到一半就超时了,请高手指点,谢谢!!
请各路高手指点~.~

------解决方案--------------------
大数据量,建议采用分批次更新
------解决方案--------------------
200万不是很大啊,楼主是怎么更换的呢
------解决方案--------------------
引用:
可以提供在数据库中执行的代码吗,我是用其它程序编写sql语句的,感觉执行效率低

代码呢?快点贴出来呀
------解决方案--------------------
引用:
update cc2 set aa_id=(select id from aa where aa.sn=bb.sn)

执行下面的,然后把执行计划发出看看,另外,你是用什么程序?

set statistics profile on
Go
update cc2 set aa_id=(select id from aa where aa.sn=bb.sn) 


------解决方案--------------------
我觉得你应该可以一次性更新啊,没有必要一条条更新。
------解决方案--------------------
引用:
我用asp写的具体如下:
sql="SELECT     AA.id AS Sell_ID, AA.dan_sn, BB.id AS sell2_ID "
sql=sql+" FROM         BB LEFT OUTER JOIN "
sql=sql+"  AA ON AA.dan_sn = BB.dan_sn "

sql=sql+"  where AA.id<439765   "

sql=sql+" ORDER BY BB.id asc "

conn.CommandTimeout=10000

rs.open sql,conn
i=0
while not rs.eof
i=i+1
if i mod 20=0 then
response.write "<br>"
end if
sql=sql+";update CC set send_id="&sqlstr(rs("sell2_ID"))&" where send_id="&sqlstr(rs("sell_id"))