哪个操作更贵 - 在SELECT
之前发出INSERT
查询,或在INSERT
操作期间处理异常?
例如,假设我想将一些用户请求参数说明param1
(主键和唯一索引),param2
,param3
保存到需要显示的数据库表中如果已存在重复密钥则发出通知。此外,假设它是一个实时情况,整个过程预计不会超过500毫秒。
为什么经常建议为三个参数执行insert语句,然后处理插入异常以满足重复项?我知道抛出异常会产生成本 - 数据库查询的成本是否超过抛出异常的成本?
答案 0 :(得分:-1)
如果我插入1,000,000次并先检查然后插入,那就是1,000,000次检查,比方说957,512次插入总共 针对数据库的1,957,512次操作。对于未通过初始检查的42,488条记录中的每条记录,我仍然需要为用户发送消息。
如果我插入并抛出异常,我会对数据库执行1,000,000个操作,并处理42,488个异常。
因此,第一种做生意的方式就是在数据库上做更多工作。