首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

子查询求和并更新update解决办法

2013-01-25 
子查询求和并更新updateupdateTableA set usd (select sum(usd) from TableA_mwhere TableA.id TableA

子查询求和并更新update
update  TableA set usd = (select sum(usd) from TableA_m
where TableA.id = TableA.id)
where TableA.id=@id
谁能解释下,这个写法是否会很慢,TableA_m表为百万数据,id没有索引。数据库总是在这句堵塞.TableA_m
是频繁使用的表。球解. 子查询
[解决办法]

UPDATE  TableA
SET     usd = ( SELECT  SUM(usd)
                FROM    TableA_m
                WHERE   TableA.id = TableA.id  --id上没有索引连接的处理就会很慢
              )
WHERE   TableA.id = @id  --这处也是,直接就表扫描了。


--快添加上索引,比对一下执行计划,lz就能看出效果了

[解决办法]
1、红字部分是不是写错了?
update  TableA set usd = (select sum(usd) from TableA_m
where TableA.id = TableA.id)
where TableA.id=@id
2、你这个瞄了一下觉得的确有问题。
3、把执行计划贴出来看看
[解决办法]
最好加上索引,提高数据检索的效率
update  TableA set usd = (select sum(usd) from TableA_m(nolock)
where TableA_m.id = @id)
where TableA.id=@id
[解决办法]
在两个表的id上加上索引,在TableA_m上的usd也加上索引。

热点排行