Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Tuning the SQL Query
The query below takes longer to run. It was running fine so far but its
been slow now. It runs as part of a procedure. The procedure returns a
REF CURSOR. I ran DBMS_PROFILER on the procedure. I'm not sure what the
problem is and how I can imrpove the performance.
SELECT /*+ INDEX(meas S_ASSET_MEAS_U1) INDEX(METER S_ASSET_P1) */
meter.x_udc_asset_id AS meter_id, meter.x_universal_id AS badge_number, account.x_udc_accnt_id AS account_number, account.x_name_1 AS customer_name, addr.addr || ', ' || addr.city || ', ' || addr.state || ' ' || addr.zipcode AS address, comm.x_network_id AS module_number, sdpattr.attrib_02 AS sp_type, MAX( cumchprodattr.attrib_02 ) AS cn_rate, MAX( DECODE( intchannel.row_id, NULL, 'N', 'Y' ) ) AS interval_data_available_yn, meas.x_reg_constant AS billing_constant, cumchprod.uom_cd AS uom FROM siebel.s_asset_at_MUDR2SEBL comm, siebel.s_asset_rel_at_MUDR2SEBL armcm, siebel.s_asset_at_MUDR2SEBL intchannel, siebel.s_asset_rel_at_MUDR2SEBL armintch, siebel.s_prod_int_xm_at_MUDR2SEBL cumchprodattr, siebel.s_prod_int_at_MUDR2SEBL cumchprod, siebel.s_asset_at_MUDR2SEBL cumchannel, siebel.s_asset_rel_at_MUDR2SEBL armcumch, siebel.s_addr_per_at_MUDR2SEBL addr, siebel.s_asset_xm_at_MUDR2SEBL sdpattr, siebel.s_org_ext_at_MUDR2SEBL account, siebel.s_asset_accnt_at_MUDR2SEBL aa, siebel.s_asset_at_MUDR2SEBL sdp, siebel.s_asset_rel_at_MUDR2SEBL arsm, siebel.s_asset_meas_at_MUDR2SEBL meas, siebel.s_asset_at_MUDR2SEBL meter WHERE comm.row_id(+) = armcm.par_asset_id AND armcm.x_rel_status(+) = 'Active' AND armcm.relation_type_cd(+) = 'COMMUNICATION-METER' AND armcm.asset_id(+) = meter.row_id AND intchannel.x_physical_ch_num(+) = 1 AND intchannel.cfg_type_cd(+) = 'Interval Data' AND armintch.asset_id = intchannel.row_id(+) AND armintch.x_rel_status(+) = 'Active' AND armintch.relation_type_cd(+) = 'METER-CHANNEL' AND armintch.par_asset_id(+) = meter.row_id AND cumchprodattr.attrib_03 = 'Active' AND cumchprodattr.attrib_01(+) = 'CN Channel Type' AND cumchprod.row_id = cumchprodattr.par_row_id(+) AND cumchannel.prod_id = cumchprod.row_id(+) AND cumchannel.x_physical_ch_num(+) = 1 AND cumchannel.cfg_type_cd(+) = 'Cumulative Consumption' AND armcumch.asset_id = cumchannel.row_id(+) AND armcumch.x_rel_status(+) = 'Active' AND armcumch.relation_type_cd(+) = 'METER-CHANNEL' AND armcumch.par_asset_id(+) = meter.row_id AND sdp.per_addr_id = addr.row_id AND sdpattr.attrib_03 = 'Active' AND sdpattr.attrib_01 = 'Type Code' AND sdp.row_id = sdpattr.par_row_id AND aa.accnt_id = account.row_id(+) AND aa.x_rel_status(+) = 'Active' AND sdp.row_id = aa.asset_id(+) AND arsm.par_asset_id = sdp.row_id AND arsm.x_rel_status = 'Active' AND arsm.relation_type_cd = 'SDP-METER' AND meter.row_id = arsm.asset_id AND meas.x_phys_chan_num = 1 AND meas.x_mudr_name = 'CUM_READ' AND meas.asset_id = meter.row_id AND meter.row_id IN ( SELECT /*+ INDEX(meter2 S_ASSET_EM_UNIVID) INDEX(arsm2 S_ASSET_REL_F1) */ meter2.row_id FROM siebel.s_asset_rel_at_MUDR2SEBL arsm2, siebel.s_asset_at_MUDR2SEBL meter2 WHERE arsm2.x_rel_status = 'Active' AND arsm2.relation_type_cd = 'SDP-METER' AND meter2.row_id = arsm2.asset_id AND meter2.data_src = 'JEA' AND meter2.type_cd = 'Meter' AND meter2.x_universal_id LIKE TRANSLATE( '25343590','*', '%' ) AND rownum <= ROUND( 50 * 1.5 ) ) AND ROWNUM <= 50 GROUP BY meter.x_udc_asset_id, meter.x_universal_id, account.x_udc_accnt_id, account.x_name_1, addr.addr, addr.city, addr.state, addr.zipcode, comm.x_network_id, sdpattr.attrib_02, meas.x_reg_constant, cumchprod.uom_cd ORDER BY account.x_udc_accnt_id, meter.x_udc_asset_idReceived on Fri May 26 2006 - 15:42:58 CDT