运行一个存储过程,一个处理数据的发现慢的问题
其中有两个缓存表
@tb和@trb
在update中@trb一个标识的时候需要
update @trb set full=1 from @trb a,@tb b where a.fID=b.fSubID其中@trb一万八千条数据
@tb六万条数据
可执行update N分钟都执行不了
不知道有什么好的办法处理

解决方案 »

  1.   

    把表变量改成临时表试试,同时在临时表fID,fSubId上建立索引
      

  2.   

    update  b  set full=1 from @tb b where  EXISTS(SELECT 1 FROM  @trb a WHERE a.fID=b.fSubID)在连接条件上加索引
      

  3.   

    update @trb 
    set full=1 
    from @trb a,@tb b 
    where a.fID=b.fSubID
    and full <> 1
    --这么大数据量的缓存表不应该是新数据,否则应该考虑缓存表的设计。
    --如果真的是新数据,建议考虑事务的另外实现方式。