Oracle SQL在第二次调用中需要很长时间

时间:2015-09-04 16:24:32

标签: sql oracle performance

我在Oracle 12.1.0数据库中运行SQL查询,这在第一次和后续调用之间花费的时间差别很大。

我们的第二次和随后的调用花费的时间几乎是第一次调用的时间的10倍。(太糟糕了 - 我没有冷备份)。

根据开发人员的说法,应用程序或基础表中没有任何更改。

我们在每次调用之前截断并分析(使用DBMS_STATS)所有相关表。但是无法复制第一次调用中看到的性能。

我的直觉是它与解析和错误的查询计划有关。

声明如下:

SELECT CASE input_val
      WHEN 'DEL'
      THEN
         (SELECT a_key
            FROM d_ad, ad_xr
           WHERE     d_ad.m_id = ad_xr.m_id
                 AND d_ad.source = ad_xr.source
                 AND ad_xr.c_id = :1
                 AND ad_xr.source = :3 )
      WHEN 'WRITE'
      THEN
         (SELECT w_key
            FROM wp_xr x, d_wl w
           WHERE     w.m_id = x.m_id
                 AND w.source = x.source
                 AND x.client_id = :4
                 AND x.source = :5 )
      WHEN 'APPEND'
      THEN
         (SELECT a_key
            FROM F0_A
           WHERE a_id = :5 AND source = :7 )
   END
FROM DUAL

0 个答案:

没有答案