我有一个关于我在 Oracle 的性能调整中看到的一般性问题。我有一个正在测试的查询。我无法提供一个简单的例子,它太大太复杂了,对不起!(我尝试降低它,但失去了症状)
我第一次运行查询时,是 2 秒。随后的时间是 3、4 甚至 5 秒。这种情况始终如一地发生 - 如果我改变间距,我会再次获得 2 秒,然后它会恢复。
这与我的预期相反——在第一次之后,数据库不需要解析查询,并且应该将块读入缓冲区缓存。我唯一能想到的是它正在某处写入临时数据,以这种方式写入和读取它比读取它更快。但这当然没有意义。
有谁知道为什么会这样?或者执行计划中的任何危险信号会导致这样的事情?
仅供参考,这是一个 SELECT,具有多个连接、聚合和视图。没有内部 PL/SQL。
谢谢