通过调整提高 Oracle 中的查询性能
Improve query performance in Oracle with tuning
我正在做一个带有 1 亿条记录的 table 的 ETL,我在其中从 TERADATA 捕获信息并将其导入 ORACLE。
该过程花费的时间太长,我想知道是否有任何方法可以通过一些调整来提高我的查询性能。
MERGE INTO TABLE_A TB USING (
select t.COLUMN_A as COLUMN_A_OLD
from TABLE_B t
left outer join STAGE s
on s.COLUMN_B = t.COLUMN_B
and s.COLUMN_C = t.COLUMN_C
and s.COLUMN_D = t.COLUMN_D
and s.COLUMN_E = t.COLUMN_E
and s.COLUMN_F = to_date('yyyy-mm-dd 00:00:00','yyyy-mm-dd hh24:mi:ss')
where t.COLUMN_F = to_date('2100-12-31 00:00:00','yyyy-mm-dd hh24:mi:ss')
and s.COLUMN_C is null
) stg
on ( stg.COLUMN_A_OLD = tb.COLUMN_A )
WHEN MATCHED THEN
UPDATE SET
TB.COLUMN_F = sysdate,
TB.COLUMN_G = $$PARAMETER ,
TB.COLUMN_H = sysdate;
commit;
谢谢。
你试过这样的东西吗?
alter session enable parallel dml;
merge /*+ parallel(10) */ into ….
PARALLEL 提示将启用读取并行性,但要同时启用写入并行性,您需要 运行 上面的 ALTER SESSION 命令或使用提示 /*+ ENABLE_PARALLEL_DML */ .
我正在做一个带有 1 亿条记录的 table 的 ETL,我在其中从 TERADATA 捕获信息并将其导入 ORACLE。 该过程花费的时间太长,我想知道是否有任何方法可以通过一些调整来提高我的查询性能。
MERGE INTO TABLE_A TB USING (
select t.COLUMN_A as COLUMN_A_OLD
from TABLE_B t
left outer join STAGE s
on s.COLUMN_B = t.COLUMN_B
and s.COLUMN_C = t.COLUMN_C
and s.COLUMN_D = t.COLUMN_D
and s.COLUMN_E = t.COLUMN_E
and s.COLUMN_F = to_date('yyyy-mm-dd 00:00:00','yyyy-mm-dd hh24:mi:ss')
where t.COLUMN_F = to_date('2100-12-31 00:00:00','yyyy-mm-dd hh24:mi:ss')
and s.COLUMN_C is null
) stg
on ( stg.COLUMN_A_OLD = tb.COLUMN_A )
WHEN MATCHED THEN
UPDATE SET
TB.COLUMN_F = sysdate,
TB.COLUMN_G = $$PARAMETER ,
TB.COLUMN_H = sysdate;
commit;
谢谢。
你试过这样的东西吗?
alter session enable parallel dml;
merge /*+ parallel(10) */ into ….
PARALLEL 提示将启用读取并行性,但要同时启用写入并行性,您需要 运行 上面的 ALTER SESSION 命令或使用提示 /*+ ENABLE_PARALLEL_DML */ .