【发布时间】:2013-03-21 10:52:18
【问题描述】:
在单个事务中,我将可能的行插入到表中,在插入行之前,我执行查询以查看是否已经存在具有我要插入的键的行。
我看到的是,检查密钥是否存在的查询在我的事务中变得非常慢,但从另一个事务中它很快,在下一个事务中它很快。
我无法将这项工作分解为更小的事务,因为我正在处理的请求需要在单个事务中。
我可以做些什么来使这个事务中的选择查询快速?
【问题讨论】:
-
为什么要检查该行是否已经存在?创建唯一约束(或索引)并简单地处理错误。
-
是的,a_horse_with_no_name 是对的。为什么要复制效率大大提高的内置功能!
-
使用
merge避免插入重复项。 -
您可以创建唯一约束或索引/主键(如@a_horse_with_no_name 所述)。另外,请尝试找出花时间的东西-您的选择或插入。也许您应该为您选择的字段添加索引
-
@Greg - 没有足够的信息来帮助你。检查行是否存在或插入部分的查询有问题吗?你如何检查行是否存在?如果插入有问题,那么您是否尝试过合并、条件插入、添加附加提示等...信息不足。
标签: sql performance oracle