我有大量实现的视图,其中一些只需几秒钟即可创建和刷新,而其他人则可以将我最多40分钟用于编译,如果Sqldeveloper在此之前没有崩溃。

我需要在查询中汇总一些字符串,并且具有以下功能

create or replace
function stragg
  ( input varchar2 )
  return varchar2
  deterministic
  parallel_enable
  aggregate using stragg_type
;

然后,在我的MV中,我使用选择语句

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所需的时间大大增加。是否有另一种方法可以实现单独的值列表?我在整个MVS中都使用它,所以这对我来说是一个必需的功能

谢谢

有帮助吗?

解决方案

下面的链接有许多用于字符串聚合的技术。他们可能会为您提供更好的性能。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top