Oracle 11g unpivot 非常慢 - 性能低下

Oracle 11g unpivot very slow - low performance

我的查询的 unpivot 查询性能很低,它运行很慢,需要大约 11 秒才能执行,而它所基于的 base 查询大约需要 60 毫秒才能执行。

base 查询很复杂,有几个连接,但 returns 只有几行。

Unpivot 在大约 7 个分组列上运行,并在 40 列左右进行 unpivot。

Explain query plan 没有详细说明,只说unpivot成本很高

可以尝试的一件事是对 base 查询使用 WITH 子句。

而不是

SELECT * from (SELECT my_data, ...) UNPIVOT (...) 

尝试

WITH base as (select my_data, ...) select * from base UNPIVOT (...)

在我的例子中,它减少了 10 倍的查询时间。