我有此过程,试图将table5加载到与同一个表(每个表具有500万条记录)联接的oracle环境(11.2)中3次以上,并且耗时超过2个小时。
create or replace PROCEDURE PROC1 AS
BEGIN
INSERT INTO table4
SELECT
lt_sn_issues.DA_SECTOR,
lt_sn_issues.DA_REGION,
tmp_ft_lt_scan_id.PROJ,
tmp_ft_lt_scan_id.SOL,
COUNT(ft_sn_issues.ISS_ID),
COUNT(DISTINCT ft_sn_issues.FL_ID),
COUNT(DISTINCT ft_fl_scans.FL_ID),
PROJ_files_count.COUNT,
COUNT(lt_sn_issues.ISS_ID),
COUNT(DISTINCT lt_sn_issues.FL_ID),
COUNT(DISTINCT lt_fl_scans.FL_ID),
COUNT(pr_sn_issues.ISS_ID),
COUNT(DISTINCT pr_sn_issues.FL_ID),
COUNT(DISTINCT pr_fl_issues.FL_ID),
CURRENT_DATE
FROM
tmp_ft_lt_scan_id
JOIN table1 ft_sn_issues ON ft_sn_issues.SCAN_ID = tmp_ft_lt_scan_id.FIRST_SCAN_ID
JOIN table1 lt_sn_issues ON lt_sn_issues.SCAN_ID = tmp_ft_lt_scan_id.FIRST_SCAN_ID
LEFT JOIN table1 pr_sn_issues
ON pr_sn_issues.SCAN_ID = tmp_ft_lt_scan_id.FIRST_SCAN_ID
JOIN table2@dblink ft_fl_scans ON ft_fl_scans.SCAN_ID = tmp_ft_lt_scan_id.FIRST_SCAN_ID
JOIN table2@dblink lt_fl_scans ON lt_fl_scans.SCAN_ID = tmp_ft_lt_scan_id.FIRST_SCAN_ID
LEFT JOIN table2@dblink pr_fl_issues ON pr_fl_issues.SCAN_ID = tmp_ft_lt_scan_id.FIRST_SCAN_ID
JOIN (
SELECT
FL_INFOR.PROJ PROJ,
FL_INFOR.SOL SOL,
COUNT(DISTINCT FL_INFOR.PATH) COUNT
FROM FL_INFOR@DBLINK
GROUP BY FL_INFOR.PROJ,L_INFOR.SOL
) PROJ_files_count
ON PROJ_files_count.PROJ = tmp_ft_lt_scan_id.PROJ
where rownum<=100
GROUP BY
lt_sn_issues.DA_SECTOR,
lt_sn_issues.DA_REGION,
tmp_ft_lt_scan_id.PROJ,
tmp_ft_lt_scan_id.SOL,
PROJ_files_count.COUNT;
答案 0 :(得分:0)
如果问题在于性能,请首先在tmp_ft_lt_scan_id.FIRST_SCAN_ID
列中添加索引。