Tôi có một câu hỏi liên quan đến hiệu suất của SQL Server.T-SQL Chèn hoặc cập nhật
Giả sử tôi có một bảng persons
với các cột sau: id
, name
, surname
.
Bây giờ, tôi muốn chèn một hàng mới trong bảng này. Quy tắc như sau:
Nếu không có mặt số
id
trong bảng, sau đó chèn hàng.Nếu có
id
, sau đó cập nhật.
Tôi có hai giải pháp ở đây:
Đầu tiên:
update persons
set [email protected]_id, [email protected]_name, [email protected]_surname
where [email protected]_id
if @@ROWCOUNT = 0
insert into persons(id, name, surname)
values (@p_id, @p_name, @p_surname)
Thứ hai:
if exists (select id from persons where id = @p_id)
update persons
set [email protected]_id, [email protected]_name, [email protected]_surname
where [email protected]_id
else
insert into persons(id, name, surname)
values (@p_id, @p_name, @p_surname)
một cách tiếp cận tốt hơn là gì? Nó có vẻ như trong sự lựa chọn thứ hai, để cập nhật một hàng, nó phải được tìm kiếm hai lần, trong khi trong tùy chọn đầu tiên - chỉ một lần. Có giải pháp nào khác cho vấn đề này không? Tôi đang sử dụng MS SQL 2000.
không chắc chắn, nhưng tôi sẽ chỉ làm nếu ((COUNT (*))> 0) sau đó cập nhật tùy chọn thứ hai –