读书人

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

发布时间: 2013-01-25 15:55:29 作者: rapoo

子查询求和并更新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也加上索引。

读书人网 >SQL Server

热点推荐