我要更新的数据量比较大 大约是800条用多选方式获得 ID ,
然后根据对应的ID 
批量更新数据库被的表
我原来的方法是 将所有ID 组合成字段@str varchar(8000)
如@str="1,2,3,4,8"
最后利用:
update 表1 set a=1 
where charindex( ',' + id + ',',  ',' + @str + ',' ) > 0 
更新数据但是超过100条,速度太慢了 效率低?求正解?

解决方案 »

  1.   

    Declare @str varchar(8000)
    set @str='1,2,3,4,8'Exec ('Update t1 Set a=1 Where ID In('+@str+')')
      

  2.   

    IN的效率高吗?
    而且 我ID 已经到8位了
    varchar 最高长度是多少啊?
      

  3.   


    varchar(max) : 2^31-1 (2147483645)
      

  4.   

    跟你8位有啥关系哦,跟你ID传入的个数反而有影响。大部分情况下in的效率还是可以接受的,
      

  5.   

    我有1000条数据 能一次更新吗?会不会超过 varchar 长度啊
      

  6.   

    char     最长8000
    varchar  最长8000
    nchar    最长4000
    nvarchar 最长4000是不是这样啊?