在插入之前检查主键值是否比使用try-catch更快?

And*_*rey 6 sql-server performance sql-server-2008

基本上我有一个带有双字段主键列(memberid,messageid)的表,我有一个存储过程,在该表中插入一个新行.

现在我检查是否存在具有PK的行并且如果没有则插入,但是当我在检查之后和实际插入之前由不同进程插入行时我已经遇到了这种情况,所以我在想另一种方式.

我不想出于性能原因使用事务,所以我想把INSERT放入try-catch并完全跳过检查.如果该行已存在,则insert将失败,但将被"catch"静音,这是正常的.

我的问题是 - 抛出错误并将其捕获到昂贵的操作中?

Vic*_*mar 0

如果您不希望失败经常发生,那么可以通过异常来处理它。

每次进行检查都会降低数据库性能,这也会影响应用程序性能......