我在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