使用字符串聚合,任何性能建议时,物化视图创建速度令人难以置信?

时间:2010-02-24 10:58:41

标签: oracle10g materialized-views string-aggregation

我有大量的物化视图,其中一些只需要几秒钟来创建和刷新,而其他人可能需要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

似乎当我使用这个STRAGG函数时,创建/刷新MV所需的时间会急剧增加。是否有另一种方法来实现逗号单独的值列表?我在我的MV中使用它,所以它对我来说是一个非常必要的功能

由于

1 个答案:

答案 0 :(得分:1)

以下链接中有许多字符串聚合技术。它们可能会为您提供更好的性能。

http://www.oracle-base.com/articles/misc/StringAggregationTechniques.php