在我们的项目中,我们有一个表table1,它由数据类型为CLOB的列Col6组成。
Col6列具有以分号分隔的值(例如:A; B; C; D)
我们需要将基于分号的此列的值拆分为分隔符。我们的表有大量的数据,在分割值后,我们预计大约有10万行。我们尝试了以下查询,但执行时间超过一小时。
如何解决性能问题?
我们尝试了以下两个查询。
select
col1, col2, col3, col4,col5,
trim(regexp_substr(col6, '[^;]+', 1, level)) as dummy_col
from table1
CONNECT BY instr(col6, ',', 1, LEVEL - 1) > 0
and col6 is not null;
select
col1, col2, col3, col4,col5,,cast(trim(
regexp_substr(col6, '[^;]+', 1, levels.column_value)
) as varchar2(1000)) as dummy_col
from table1,
table(cast(multiset(
select level from dual
connect by level <= length (regexp_replace(col6, '[^;]+')) + 1
) as sys.OdciNumberList)) levels
where col6 is not null;