0

我有大量物化视图,其中一些只需几秒钟即可创建和刷新,而另一些可能需要我长达 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 中都使用它,所以它对我来说是一个非常必要的功能

谢谢

4

1 回答 1

1

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

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

于 2010-02-24T11:05:18.113 回答