f*****e 发帖数: 5177 | 1 I run SQL query estimated execution plan again one query.
The plan showed that the cost of "delete" and "insert" is 900%.
What does that mean?
PS: Which one of the following queries is better?
Query1:
if exist (select * from table1 where ...)
begin
update table1 set ...
end
else
begin
insert into table1 ...
end
Query2:
if exist (select * from table1 where ...)
begin
delete from table1 where ...
end
insert into table1 ...
Query3:
delete from table1 where ...
insert into table1 ... |
c*****d 发帖数: 6045 | |
B*****g 发帖数: 34098 | 3 google merge
【在 f*****e 的大作中提到】 : I run SQL query estimated execution plan again one query. : The plan showed that the cost of "delete" and "insert" is 900%. : What does that mean? : PS: Which one of the following queries is better? : Query1: : if exist (select * from table1 where ...) : begin : update table1 set ... : end : else
|
f*****e 发帖数: 5177 | 4
【在 B*****g 的大作中提到】 : google merge
|
f*****e 发帖数: 5177 | 5 why?
【在 c*****d 的大作中提到】 : 肯定是3了
|
c*****d 发帖数: 6045 | 6 avoid exist
不过我没看懂1,2,3之间的关系
为什么1要table1中没记录要insert,有记录要update
而3就直接delete,insert
【在 f*****e 的大作中提到】 : why?
|
f*****e 发帖数: 5177 | 7
query 的要求就是,像你说的
如果table1中有记录就update,没有就insert
Query1是严格按照这个逻辑走的。
Query3是是不管有没有,都delete了。然后再insert
【在 c*****d 的大作中提到】 : avoid exist : 不过我没看懂1,2,3之间的关系 : 为什么1要table1中没记录要insert,有记录要update : 而3就直接delete,insert
|
B*****g 发帖数: 34098 | 8 hehe
http://msdn2.microsoft.com/en-us/library/bb510625(SQL.100).aspx
【在 f*****e 的大作中提到】 : : query 的要求就是,像你说的 : 如果table1中有记录就update,没有就insert : Query1是严格按照这个逻辑走的。 : Query3是是不管有没有,都delete了。然后再insert
|
B*****g 发帖数: 34098 | 9 I would say he means tab1 and tab2
【在 c*****d 的大作中提到】 : avoid exist : 不过我没看懂1,2,3之间的关系 : 为什么1要table1中没记录要insert,有记录要update : 而3就直接delete,insert
|
f*****e 发帖数: 5177 | 10 wrong
【在 B*****g 的大作中提到】 : I would say he means tab1 and tab2
|
j*****n 发帖数: 1781 | 11 not exactly, it depends.
say the server is highly transactional, simply delete first (3) will block
all other concurrent queries (exclusive lock on certain rows if exist).
【在 c*****d 的大作中提到】 : 肯定是3了
|
c*****d 发帖数: 6045 | 12 1中update也一样要block other transaction
【在 j*****n 的大作中提到】 : not exactly, it depends. : say the server is highly transactional, simply delete first (3) will block : all other concurrent queries (exclusive lock on certain rows if exist).
|