日期:2014-05-18  浏览次数:20493 次

询问并发问题
update set a=a+@aa ,b=b+@bb,c=(a+@aa)/(b+@bb) 这样的sql 语句有没有并发问题?

另外问一下 update 的这样的一组数据 有没有比较效率的办法?

------解决方案--------------------
探讨
update set a=a+@aa ,b=b+@bb,c=(a+@aa)/(b+@bb) 这样的sql 语句有没有并发问题?

另外问一下 update 的这样的一组数据 有没有比较效率的办法?

------解决方案--------------------
SQL code
--update set a=a+@aa ,b=b+@bb,c=(a+@aa)/(b+@bb) 这样的sql 语句有没有并发问题?

--另外问一下 update 的这样的一组数据 有没有比较效率的办法?
create table #a (a int,b int, c int)
insert into #a values(1,32,3)
insert into #a values(2,2,33)
insert into #a values(3,22,32)
insert into #a values(4,2,34)
insert into #a values(5,24,35)
insert into #a values(6,25,3)
insert into #a values(7,23,36)
insert into #a values(8,26,37)
insert into #a values(9,32,38)
insert into #a values(0,12,39)
insert into #a values(11,32,93)
insert into #a values(12,24,53)
insert into #a values(13,22,83)
insert into #a values(14,23,31)
select * from #a
declare @aa int declare @bb  int 
set @aa=1 set @bb=3
update #a set a=a+@aa ,b=b+@bb,c=(a+@aa)/(b+@bb) 
select * from #a


a           b           c
----------- ----------- -----------
1           32          3
2           2           33
3           22          32
4           2           34
5           24          35
6           25          3
7           23          36
8           26          37
9           32          38
0           12          39
11          32          93
12          24          53
13          22          83
14          23          31

(14 行受影响)

(14 行受影响)

a           b           c
----------- ----------- -----------
2           35          0
3           5           0
4           25          0
5           5           1
6           27          0
7           28          0
8           26          0
9           29          0
10          35          0
1           15          0
12          35          0
13          27          0
14          25          0
15          26          0

(14 行受影响)

------解决方案--------------------
update set a=a+@aa ,b=b+@bb,c=(a+@aa)/(b+@bb) 这样的sql 语句有没有并发问题?
--> 理论上讲,任何DML语句都有并发问题.

另外问一下 update 的这样的一组数据 有没有比较效率的办法?
--> 这样写已经OK了,你还想从哪方面提高效率.
------解决方案--------------------
探讨

比如 表 有列 ID a b c

我每次有40-100条数据 上传
update set a=a+@aa ,b=b+@bb,c=(a+@aa)/(b+@bb) where id=@id
如果在DAL层中一条条的update 那么就需要运行40-100次

PS: 上传的频率是 每分钟 100-4000+次