2015-07-21 59 views
3

哪种操作更昂贵 - 在INSERT之前发出SELECT查询,或在INSERT操作期间处理异常?在插入或插入异常之前,我应该检查一个键是否存在?

例如,假设我想要坚持某些用户请求参数说param1(主键&唯一索引),param2param3到数据库表的要求显示通知,如果一个重复的键已经存在。此外,假定整个过程预计不会超过500毫秒的实时情况。

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

+0

您可以使用A vs B代码示例更清楚地说明此问题。即使修改后,我也无法用代码描绘你想要描述的内容。 “将参数保存到数据库”是什么意思?将它们插入表中? –

+0

为什么你不这样做?尽可能防止异常,并在可能时处理异常,都是良好的做法。 – overslacked

+0

你期望尝试插入重复的频率如何?表格是否正确索引? – shawnt00

回答

-1

如果我插入1,000,000次并首先检查然后插入,即1,000,000个检查并说出957,512个插入总计 1,957,512针对数据库的操作。我仍然需要做的一些事情就是通知用户每个没有初始检查的42,488条记录。

如果我插入并抛出异常,我对数据库有1,000,000个操作,需要处理的异常有42,488个。

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

+0

我已经低估了这个,因为没有任何关于检测重复主键与处理异常的有效时间的度量标准,我不认为这个答案是有用的。我强烈希望检测重复数据的性能要高得多,因为它使用的是数据库系统,因为它是为了使用而设计的,异常处理的代价非常昂贵。 – overslacked

+0

@HLGEM我同意overslacked。性能如何比较? –

相关问题