我已经在2-3个地方看到过这种情况,在某些情况下,子查询因子(Oracle With子句,也称为公用表表达式)比物化视图更具性能,但没有人提到过。
在某些情况下是否属实,并且应该在这些场合使用子查询因子以获得更高的性能。
答案 0 :(得分:1)
Oracle WITH子句主要是使语句更具可读性的一种方法。当子语句在语句中出现多次时,Oracle 可能 选择仅评估一次WITH子句并将其结果放入临时表中。据说无证件提示MATERIALIZE鼓励Oracle这样做。
但是,任何时候Oracle也可以选择内联WITH子句,在这种情况下,与重复的子查询相比,根本不存在性能差异。总而言之,我对WITH的性能优势的体验有点令人失望。
相关的物化视图可以预先做一些工作,无论在语句中引用它们多少次都可以提高性能。