我想为单个"会话"插入数据。从一张桌子到另一张桌子。在此之前,我想使用[唯一ID]列删除有关此同一会话的所有预先存在的数据。
我的问题是:
检查数据是否存在对我来说是否更有效率?然后删除它:
if (exists (select top 1 * from dbo.destinationTable where [Unique ID] = @unique_id))
begin;
delete from dbo.destinationTable where [Unique ID] = @unique_id;
end;
或者,如果不先检查就运行delete语句更好:
delete from dbo.destinationTable where [Unique ID] = @unique_id;
答案 0 :(得分:1)
对于更高效的答案,必须对数据库中的数据,数据库设计以及预期结果(而不是查询)执行更多操作。例如,如果要删除的表没有子表,并且您希望几乎所有时间都有要删除的记录,那么检查存在是浪费精力。另一方面,如果您经常没有要删除的记录,或者您可能会在级联删除中删除大量子记录,那么首先检查存在是否有意义。