我继承了一个有点混乱的查询,我正在努力重构以提高性能。
在此过程中,由于个人喜好,我所做的一件事是将所有 ANSI-99 连接语法从“内连接”和“左外连接”语句更改为查询中的谓词。我注意到两件非常奇怪的事情,我希望能得到解释。
- 从“INNER JOIN...”语法更改联接已更改解释计划。使用 ANSI 99 语法,oracle 对正在连接的列进行全表扫描。更改连接语法后,它现在执行谓词推送。为什么连接语法会改变解释计划?
- 推入内联视图的谓词实际上大大减慢了查询速度。正在运行的查询(在更改连接之前)大约 3 秒。现在需要 9 秒。老实说,我对阅读解释计划相当陌生,因此查询的重组完全有可能由于不同的原因而减慢了速度。但最终我的问题是:“推索引列的谓词是否有可能大幅减慢查询速度?如果是,为什么?”
感谢您的回复,如果这不是很清楚,我很抱歉...