2 xzsfg6825 xzsfg6825 于 2017.09.02 12:06 提问

ORACLE 解决使用“wmsys.wm_concat() ”连接超限再次遇到处理时间过长的问题 1C

各位大佬,现有数据库的两个表,其中我使用wmsys.wm_concat()函数把 表一 中的一个字段所有数据聚合起来之后,发现已经过了限制,我算了一下聚合起来之后的字符串的数据长度大概在25w左右,然后我网上查了半天,使用 “ 修改自定义类型中内部变量的类型”的办法解决了这个超限的问题,写了一个存储过程,使得聚合起来的这条数据成功插入到了 表二 的clob字段中。
但是之后我发现了一个更大的问题,由于要聚合的字段下的数据太多,而我的存储过程中写的聚合的是两个字段的数据和存储,所以执行一次这个存储过程需要2分40秒的时间,这个时间系统是无法忍受的,无法满足需求的,我不知道该怎么解决这个问题了,要是实在没办法我就换个方法不用这个自定义类型的方法了,求助各位大佬该怎么优化一下呢?

2个回答

xzsfg6825
xzsfg6825   2017.09.03 10:03

没人吗?顶一顶,求大神来解答解答~~~

nihao2007
nihao2007   2017.09.06 11:37

你25万的数据必须在系统查询的时候在汇总聚合吗,可以先聚合好了,然后直接查询吗,比如:写个过程定时跑到一个指定表里面,然后再从哪个表里面查询,不过你这个一次查询25万的记录是确实需要吗,能添加筛选条件把不需要的筛选掉吗。

xzsfg6825
xzsfg6825 我这个25w长度的数据串都是有用的,因为这是把一个表中的2w8千多条记录的一个字段聚合起来之后变成这么长的,想的是要聚合起来之后存进另一个表,然后读取的时候再从这个表里取出这个25w长度的clob串进行分割截取还原成原来的数据,所以我现在光是从存的时候就出现了问题,聚合存入的时间太长,不知道该怎么优化,还是得换个方法了?
2 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片