使用字符串聚合时,创建物化视图的速度非常慢,有什么性能建议?
问题描述:
我已经加载了物化视图,其中一些只需要几秒钟来创建和刷新,而另一些则可以花费我长达40分钟的时间来编译,如果SQLDeveloper在此之前没有崩溃的话。使用字符串聚合时,创建物化视图的速度非常慢,有什么性能建议?
我需要聚合一些字符串我的查询中,我有以下功能
create or replace
function stragg
(input varchar2)
return varchar2
deterministic
parallel_enable
aggregate using stragg_type
;
然后,在我的MV我用select语句如
SELECT
hse.refno,
STRAGG (DISTINCT per.person_name) as PERSONS
FROM
HOUSES hse,
PERSONS per
这是伟大的,因为它给我以下内容:
refno persons
1 Dave, John, Mary
2 Jack, Jill
而不是:
refno persons
1 Dave
1 John
1 Mary
2 Jack
2 Jill
看来,当我使用这个功能时,创建/刷新MV的时间大大增加。是否有一种替代方法来实现逗号分隔的值列表?我用这个在我的MV,因此对我来说是非常必需功能
感谢
答
在下面的链接有大量的字符串聚合技术。他们可能会为您提供更好的性能。
http://www.oracle-base.com/articles/misc/StringAggregationTechniques.php
+0
感谢您的链接,我已经尝试过'WM_CONCAT',但它比'STRAGG'更慢,但约100%。可能需要尝试一些定制的选项,如上所述 – Jimmy 2010-02-24 14:16:55
你确定这是'stragg'的错吗?查询的计划是什么? – 2010-02-25 00:14:38