数据多选批量更新 求正解

bob0234 2013-01-31 02:27:02
我要更新的数据量比较大 大约是800条

用多选方式获得 ID ,
然后根据对应的ID
批量更新数据库被的表


我原来的方法是 将所有ID 组合成字段@str varchar(8000)
如@str="1,2,3,4,8"
最后利用:
update 表1 set a=1
where charindex( ',' + id + ',', ',' + @str + ',' ) > 0
更新数据

但是超过100条,速度太慢了 效率低?

求正解?
...全文
190 12 点赞 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bob0234 2013-02-01
char 最长8000 varchar 最长8000 nchar 最长4000 nvarchar 最长4000 是不是这样啊?
  • 打赏
  • 举报
回复
bob0234 2013-02-01
我有1000条数据 能一次更新吗? 会不会超过 varchar 长度啊
  • 打赏
  • 举报
回复
-Tracy-McGrady- 2013-01-31
引用 9 楼 DBA_Huangzj 的回复:
引用 8 楼 yangsh0722 的回复:引用 7 楼 DBA_Huangzj 的回复:引用 4 楼 yangsh0722 的回复:引用 1 楼 DBA_Huangzj 的回复:你干嘛不用in来处理? 好久不见,shi到哪里去了?我哥结婚,昨天才忙完,今天才有时间 恭喜恭喜,您老什么时候结婚啊,我看您也快30了吧我才20出头
那么叼?
  • 打赏
  • 举报
回复
發糞塗牆 2013-01-31
引用 8 楼 yangsh0722 的回复:
引用 7 楼 DBA_Huangzj 的回复:引用 4 楼 yangsh0722 的回复:引用 1 楼 DBA_Huangzj 的回复:你干嘛不用in来处理? 好久不见,shi到哪里去了?我哥结婚,昨天才忙完,今天才有时间 恭喜恭喜,您老什么时候结婚啊,我看您也快30了吧
我才20出头
  • 打赏
  • 举报
回复
-Tracy-McGrady- 2013-01-31
引用 7 楼 DBA_Huangzj 的回复:
引用 4 楼 yangsh0722 的回复:引用 1 楼 DBA_Huangzj 的回复:你干嘛不用in来处理? 好久不见,shi到哪里去了?我哥结婚,昨天才忙完,今天才有时间
恭喜恭喜,您老什么时候结婚啊,我看您也快30了吧
  • 打赏
  • 举报
回复
發糞塗牆 2013-01-31
引用 4 楼 yangsh0722 的回复:
引用 1 楼 DBA_Huangzj 的回复:你干嘛不用in来处理? 好久不见,shi到哪里去了?
我哥结婚,昨天才忙完,今天才有时间
  • 打赏
  • 举报
回复
發糞塗牆 2013-01-31
引用 3 楼 bob0234 的回复:
IN的效率高吗? 而且 我ID 已经到8位了 varchar 最高长度是多少啊?
跟你8位有啥关系哦,跟你ID传入的个数反而有影响。大部分情况下in的效率还是可以接受的,
  • 打赏
  • 举报
回复
我腫了 2013-01-31
引用 3 楼 bob0234 的回复:
IN的效率高吗? 而且 我ID 已经到8位了 varchar 最高长度是多少啊?
varchar(max) : 2^31-1 (2147483645)
  • 打赏
  • 举报
回复
-Tracy-McGrady- 2013-01-31
引用 1 楼 DBA_Huangzj 的回复:
你干嘛不用in来处理?
好久不见,shi到哪里去了?
  • 打赏
  • 举报
回复
bob0234 2013-01-31
IN的效率高吗? 而且 我ID 已经到8位了 varchar 最高长度是多少啊?
  • 打赏
  • 举报
回复
我腫了 2013-01-31
Declare @str varchar(8000)
set @str='1,2,3,4,8'

Exec ('Update t1 Set a=1 Where ID In('+@str+')')
  • 打赏
  • 举报
回复
發糞塗牆 2013-01-31
你干嘛不用in来处理?
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server
加入

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2013-01-31 02:27
社区公告
暂无公告