为什么 oracle 更新的执行时间更长,尽管成本更低?

Why does an oracle update takes longer to execute despite costing less?

我有一个 oracle 更新查询如下:

> UPDATE MAIN_TABLE T1
>     SET T1.A_VALUE=(SELECT A_VALUE FROM TEMP_TABLE WHERE A_VALUE = 'NYCM.GN2')
>     WHERE 
>     T1.V_ID IN =7841
>     AND T1.S_ID = 
>     (
>     SELECT T2.S_ID
>     FROM MAIN_TABLE T1, T2_DETAILS T2
>     WHERE T1.S_ID = T2.S_ID 
>     AND T1.A_VALUE = 'NYCM.GN2'
>     AND T1.V_ID = 7065
>     );

它的解释计划是

没有子查询,主查询的执行时间更短。以下查询大约需要 10 秒。

UPDATE MAIN_TABLE T1
SET T1.A_VALUE=(SELECT A_VALUE FROM TEMP_TABLE WHERE A_VALUE = 'NYCM.GN2')
WHERE 
T1.V_ID IN =7841
AND T1.S_ID = A_VALUE

'cost' 是优化器在评估给定查询的不同访问计划 时生成的内部值。您真的无法比较不同查询之间的 'cost'。即使如此,'cost' 也是优化器的 估计 。 'less cost' 查询实际上比 'higher cost' 查询长 运行 可能有很多原因.. 优化器中的错误、资源争用等