【发布时间】:2018-03-31 11:48:43
【问题描述】:
我需要在Merge Into 语句中update 一个表的字段,而我正在做的是这样的
MERGE INTO A_TABLE a
USING (ANOTHER_TABLE b)
ON (SOME_PK)
WHEN MATCHED THEN
UPDATE
SET a.field = b.field
WHERE a.field != b.field
我的问题是关于我检查这些值是否为equal or not 的最后一行。我可以声称这些表之间可能只有%2 difference。在这种情况下,使用WHERE 子句我会输什么或赢什么?对于这种情况,可能oracle在后面进行了一些优化,更新的字段与将设置的值相同。
【问题讨论】:
-
将语句留在 . . .假设旧值和新值都不是
null。 -
请移除您的一个 cmets。我知道没有问题,我有 dbUnit 测试来证明这一点。我在问什么是优点或缺点。
-
@Erdiİzgi iki durumdaki
explain plandan gelen,costdeğerlerine bakmıştınız değil mi Erdi bey? -
@BarbarosÖzhan 我们不能在这里使用当地语言。但是如果你可以在执行计划之间进行成本评估,那也很好。我只想知道即使值相同,oracle也会完成更新操作。否则,我们都知道更新比读取字段要慢得多。
-
你的问题不清楚。与什么相比,你输什么或赢什么?在任何情况下,解释计划您的查询并检查它们的行为方式
标签: sql oracle performance sql-update