【问题标题】:Why does an oracle update takes longer to execute despite costing less?为什么尽管成本更低,但 Oracle 更新却需要更长的时间来执行?
【发布时间】:2021-03-08 11:23:57
【问题描述】:

我有一个 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

【问题讨论】:

    标签: sql oracle performance sql-update subquery


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      • 2011-06-28
      • 1970-01-01
      相关资源
      最近更新 更多