【发布时间】:2019-05-05 08:10:34
【问题描述】:
我知道使用 INSERT WHERE NOT EXISTS 比使用 INSERT 更好,因为它会导致重复记录或唯一密钥违规问题。 但是在性能方面,它会产生什么大的不同吗?
INSERT WHERE NOT EXISTS 将在内部触发额外的 SELECT 语句来检查记录是否存在。如果是大表,建议使用 INSERT 与 INSERT WHERE NOT EXITS 哪个? 有人请解释两者之间的执行成本差异。
【问题讨论】:
-
性能主要取决于您一次插入多少行。如果您要插入 BULK 记录,当然会有性能问题,但如果您要插入单行,那没什么大不了的。现在,如果您使用 IF EXISTS,请尝试在 Where 子句中使用的列上应用 Index。
-
比较数据完整性和性能是一种错误的二分法。您不能仅仅因为加载垃圾的速度更快而损坏您的数据库。
标签: sql oracle query-optimization sql-insert