为什么 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' 查询长 运行 可能有很多原因.. 优化器中的错误、资源争用等
我有一个 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' 查询长 运行 可能有很多原因.. 优化器中的错误、资源争用等