您的位置:首页 > 数据库 > Oracle

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

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

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: