oracle 大容量表多表关联,如何提高性能?

博主面临一个性能问题,需要在Oracle数据库中插入数据,涉及三张千万级的大表关联,其中包括子查询。尽管不考虑存储过程和新建索引,寻求提升INSERT INTO...SELECT语句运行速度的方法。已知表odse.te_prd_proo_in_ap有57267461条记录,odse.te_prd_prod_ext_x有87674914条记录,而odsd.tes_crm_product有4228条记录。

笔者向一个表中插入数据关联三个表,在关联语句中存在子查询,表级容量都在千万级,运行时间难以忍受,具体语句如下:

INSERT INTO odse.te_prd_aux_prod_ins
(
   SERV_PRODUCT_ROW_ID
  ,SERV_PRODUCT_ID
  ,SERV_ROW_ID
  ,SERV_ID
  ,PRODUCT_ROW_ID
  ,product_id
  ,product_standard_code
  ,BIZ_AREA_ID
  ,REGION_ID
  ,CUR_AGREE_ROW_ID
  ,APPLY_DATE
  ,EFF_DATE
  ,EXP_DATE
  ,COMPLETE_DATE
  ,STOP_DATE        
  ,REMOVE_DATE        
  ,STATUS_CD        
  ,SUB_ACT_CD        
  ,SUB_ACT_CD_NM
  ,CUR_MONTH_EFF_FLAG         
  ,CREATED_DATE        
  ,CREATED_BY        
  ,LAST_UPD        
  ,LAST_UPD_BY        
  ,INDB_FILE_NAME        
  ,OP_DATE        
)       
SELECT  
   ta.ASSET_ROW_ID    
  ,ta.X_PROD_INST_NUM 
  ,ta.ROOT_ASSET_ID   
  ,ta.X_PROD_INST_NUM
  ,ta.PROD_ID         
  ,tp.prod_id      
  ,tp.standard_code
  ,ta.BIZ_AREA_ID     
  ,ta.X_REGION_ID     
  ,ta.CUR_AGREE_ID    
  ,ta.INSTALL_DT      
  ,tv.ATTRIB_12       
  ,tv.ATTRIB_13       
  ,tv.ATTRIB_27       
  ,tv.ATTRIB_28       
  ,tv.ATTRIB_29       
  ,ta.STATUS_CD       
  ,ta.SUB_ACT_CD      
  ,ta.SUB_ACT_CD_NM
  ,ta.X_TAKEEFFECT_FLAG  
  ,ta.CREATED_DATE    
  ,ta.CREATED_BY      
  ,ta.LAST_UPD        
  ,ta.LAST_UPD_BY     
  ,ta.INDB_FILE_NAME  
  ,ta.OP_DATE         

FROM
   (select * from odse.te_prd_proo_in_ap where rec_status=1) ta
LEFT JOIN                        
   (select * from odsd.TES_CRM_PRODUCT where rec_status=1) tp    
ON                            
   ta.PROD_ID=tp.row_id
LEFT JOIN                                  
   (select * from odse.te_prd_prod_ext_x where rec_status=1) tv     
ON                                  
   ta.asset_row_id=tv.asset_row_id

 

请高手们赐教如何提高运行速率?注:不使用存储过程和不建索引。

odse.te_prd_proo_in_ap   记录:57267461

odse.te_prd_prod_ext_x    记录:87674914

odsd.tes_crm_product       记录:4228

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值