SQL Update

来源:百度知道 编辑:UC知道 时间:2024/06/02 07:58:19
update table set name='1' where id in (.......)
由于数据量太大(几十万条)in(......)中的字段过长,会超过SQL语句的长度限制
导致程序报错.

问下,有什么方法能让我实现update语句.
但是又不受SQL语句长度限制.
最好运行速度也很快的那种.

麻烦详细说下,谢谢

用程序或sql语句或者sqlserver的dts把所有id放到一个表里比如idtable
update table set name='1' where id in (select id from idtable)

把in里的数据分段处理。

或者新建个表,把in里的数据批量插入进去再update ... where id in (select id from ...) ,批量插入这个操作的速度应该是有优化办法的,postgresql中有copy命令,其他的不太清楚了。

速度方面我想不到非常好的办法

建个表 t1,把in 里的id导到t1里,然后两个表都建索引(id),然后运行下面语句,没有比这速度更快了。

update table set name ='1' where id in (select id from t1)

update table set name='1' where id in (select id from table where (能获取id的条件))

提个思路试一下。
给表建个聚集索引。然后分片更新。

写存储过程传参数