Oracle 的合并诉选择->更新/插入

Tom*_*omJ 7 performance oracle merge

什么是更快的声明?一个MERGE或选择- >更新/插入取决于它是否返回一个值?

我正在尝试优化数据库,但我没有发现任何比较两者的速度测试。

我通过StackOverflow 答案找到了 MERGE 命令

Jus*_*ave 7

AMERGE会更有效,因为您只执行一次查询。更好的是做一个基于集合的MERGE而不是做一堆单行MERGE语句,这是我假设你将要实现的,因为可以选择执行 aSELECT来查看该行是否存在。

与其先执行 aSELECT然后确定是执行 anINSERT还是 an UPDATE,不如执行 the UPDATE,检查是否更新了 0 行,然后执行 theINSERT如果您UPDATE没有影响任何行。这样,需要 an 的源行UPDATE会更有效率,而需要 an 的行INSERT基本上与执行 aSELECT和一样快INSERT。这种方法仍然会比 a 慢MERGE,但它比做额外的SELECT.