在插入或处理插入异常之前,我应该检查密钥是否存在吗?

时间:2015-07-21 06:53:50

标签: sql sql-server exception-handling

哪个操作更贵 - 在SELECT之前发出INSERT查询,或在INSERT操作期间处理异常?

例如,假设我想将一些用户请求参数说明param1(主键和唯一索引),param2param3保存到需要显示的数据库表中如果已存在重复密钥则发出通知。此外,假设它是一个实时情况,整个过程预计不会超过500毫秒。

为什么经常建议为三个参数执行insert语句,然后处理插入异常以满足重复项?我知道抛出异常会产生成本 - 数据库查询的成本是否超过抛出异常的成本?

1 个答案:

答案 0 :(得分:-1)

如果我插入1,000,000次并先检查然后插入,那就是1,000,000次检查,比方说957,512次插入总共 针对数据库的1,957,512次操作。对于未通过初始检查的42,488条记录中的每条记录,我仍然需要为用户发送消息。

如果我插入并抛出异常,我会对数据库执行1,000,000个操作,并处理42,488个异常。

因此,第一种做生意的方式就是在数据库上做更多工作。