Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.server -> High CPU Query
Hi,
Following query is talking high CPU, using Oracle9i on windows: SELECT t1.cessation_date, t1.commence_date, t1.confirm_date, t1.alias,
t1.birth_date, t1.emp_card_one, t1.employee_id, t1.employee_name,
t1.employment_type_code, t1.family_name, t1.gender, t1.given_name,
t1.language_spoke, t1.language_written, t1.mail_id, t1.marital_stat_eff_date, t1.marital_stat_code, t1.nationality_code, t1.native_name, t1.original_commence_date, t1.permit_expiry_date, t1.permit_issue_date, t1.permit_type, t1.national_id, t1.race_code, t1.religion_code, t1.religion_born, t1.religion_convert_date, t1.security_id, t1.service_reference_date, t1.status_code, t1.title_code
('JL1-S0',
'JL1-SF',
'JL1-SG',
'JL1-SH',
'JL1-SI',
'JL1-SJ',
'JL1-SK',
'JL1-SL',
'JL1-SM',
'JL1-SN',
'JL1-SO',
'JL1-SP',
'JL1-SQ',
'JL1-SR',
'JL5-S0',
'JL8-S9',
'JL9-SC',
'JLA-S0',
'JL8EHR26',
'JL8EHR29'
) ) AND (t0.leave_scheme_code = 'LSA') ) AND (t0.employee_id = t1.employee_id) ) AND t1.employee_id <> 'SG02514373' AND t1.employee_id IN ( SELECT t1.employee_id FROM sec_gpprofile t2, sa_userprofile t1, sec_profilegroupmap t0 WHERE (( (t2.object_id = 'Time.Attendance Adj') AND ( (t0.GROUP_ID = t2.GROUP_ID) AND (t1.user_id = t0.profile_id) ) ) )) ) AND (t0.employee_id IN ( SELECT e.employee_id FROM hrm_curr_career_v c, hrm_employee e WHERE c.employee_id = e.employee_id AND e.employee_id LIKE 'SG%' AND (e.cessation_date IS NULL OR e.cessation_date >= SYSDATE ) AND ( c.employee_id = 'SG02514373' OR c.supervisor_3 = ('SG02514373') OR c.employee_id IN ( SELECT cc1.employee_id FROM hrm_cost_centre cc1, hrm_curr_career_v c WHERE c.employee_id = ('SG02514373') AND c.remarks LIKE '%/' || cc1.cost_centre_code || '%' AND cc1.employee_id LIKE 'SG%' AND cc1.eff_date = (SELECT MAX (cc2.eff_date) FROM hrm_cost_centre cc2 WHERE cc2.employee_id = cc1.employee_id AND cc2.eff_date <= SYSDATE)) ) UNION (SELECT e.employee_id FROM hrm_curr_career_v c, hrm_employee e, ihr_covering_officer r2 WHERE c.employee_id = e.employee_id AND e.employee_id LIKE 'SG%' AND ( e.cessation_date IS NULL OR e.cessation_date >= SYSDATE ) AND r2.covering_officer_id = ('SG02514373') AND r2.start_date <= SYSDATE AND r2.end_date >= SYSDATE AND ( c.supervisor_3 = r2.officer_id OR c.employee_id IN ( SELECT cc1.employee_id FROM hrm_cost_centre cc1, hrm_curr_career_v c2 WHERE c2.employee_id = r2.officer_id AND c2.remarks LIKE '%/' || cc1.cost_centre_code || '%' AND cc1.employee_id LIKE 'SG%' AND cc1.eff_date = (SELECT MAX (cc2.eff_date) FROM hrm_cost_centre cc2 WHERE cc2.employee_id = cc1.employee_id AND cc2.eff_date <= SYSDATE)) ))) ) ) call count cpu elapsed disk query current
rows
------- ------ -------- ---------- ---------- ---------- ----------
Parse 1 0.00 0.00 0 0 0 0 Execute 1 0.00 0.00 0 8 0 0 Fetch 7 386.25 685.22 1 41983586 0 69
total 9 386.25 685.22 1 41983594 0 69 Rows Execution Plan ------- --------------------------------------------------- 0 SELECT STATEMENT GOAL: CHOOSE 69 FILTER 69 NESTED LOOPS 69 NESTED LOOPS 69 NESTED LOOPS 354 VIEW OF 'VW_NSO_1' 354 SORT (UNIQUE) 354 UNION-ALL 354 FILTER 1675 SORT (GROUP BY) 8420 FILTER 53511 HASH JOIN 53511 NESTED LOOPS 40928544 NESTED LOOPS 13428 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'HRM_CAREER_PK' (UNIQUE) 40928544 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'HRM_CAREER' 3048 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'HRM_CAREER_PK' (UNIQUE) 53511 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'HRM_JOB_PK' (UNIQUE) 53511 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'HRM_EMPLOYEE_IDX1' (NON-UNIQUE) 53511 FILTER 354 SORT (GROUP BY) 1290 FILTER 4909 NESTED LOOPS 4909 MERGE JOIN (CARTESIAN) 1292 NESTED LOOPS 3022 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'HRM_CAREER' 3022 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'HRM_CAREER_PK' (UNIQUE) 3022 SORT (AGGREGATE) 1 FIRST ROW 1 INDEX GOAL: ANALYZED (RANGE SCAN (MIN/MAX)) OF 'HRM_CAREER_PK' (UNIQUE) 1 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'HRM_JOB_PK' (UNIQUE) 3022 BUFFER (SORT) 1292 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'HRM_COST_CENTRE_PK' (UNIQUE) 4909 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'HRM_COST_CENTRE_PK' (UNIQUE) 1326 FILTER 0 NESTED LOOPS 0 NESTED LOOPS 3022 NESTED LOOPS 3584 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'HRM_CAREER' 3584 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'HRM_CAREER_PK' (UNIQUE) 3584 SORT (AGGREGATE) 3609 FIRST ROW 3584 INDEX GOAL: ANALYZED (RANGE SCAN (MIN/MAX)) OF 'HRM_CAREER_PK' (UNIQUE) 3584 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'HRM_JOB_PK' (UNIQUE) 3584 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'HRM_EMPLOYEE' 3022 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'HRM_EMPLOYEE_PK' (UNIQUE) 3584 TABLE ACCESS GOAL: ANALYZED (FULL) OF 'IHR_COVERING_OFFICER' 0 FILTER 0 SORT (GROUP BY) 0 FILTER 0 NESTED LOOPS 0 MERGE JOIN (CARTESIAN) 0 NESTED LOOPS 0 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'HRM_CAREER' 0 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'HRM_CAREER_PK' (UNIQUE) 0 SORT (AGGREGATE) 0 FIRST ROW 0 INDEX GOAL: ANALYZED (RANGE SCAN (MIN/MAX)) OF 'HRM_CAREER_PK' (UNIQUE) 0 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'HRM_JOB_PK' (UNIQUE) 0 BUFFER (SORT) 0 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'HRM_COST_CENTRE_PK' (UNIQUE) 0 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'HRM_COST_CENTRE_PK' (UNIQUE) 0 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'HRM_CAREER' 69 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'HRM_CAREER_PK' (UNIQUE) 354 SORT (AGGREGATE) 354 FIRST ROW 354 INDEX GOAL: ANALYZED (RANGE SCAN (MIN/MAX)) OF 'HRM_CAREER_PK' (UNIQUE) 354 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'HRM_JOB_PK' (UNIQUE) 69 TABLE ACCESS GOAL: ANALYZED (BY INDEX ROWID) OF 'HRM_EMPLOYEE' 69 INDEX GOAL: ANALYZED (UNIQUE SCAN) OF 'HRM_EMPLOYEE_PK' (UNIQUE) 69 NESTED LOOPS 1 NESTED LOOPS 1 TABLE ACCESS GOAL: ANALYZED (FULL) OF 'SEC_GPPROFILE' 1 INDEX GOAL: ANALYZED (RANGE SCAN) OF 'PK_SEC_PROFILEGROUPMAP26' (UNIQUE) 1 INDEX (UNIQUE SCAN) OF 'UK2_SA_TESTPROFILE' (UNIQUE)
Any idea to improve it? how to remove CARTESIAN which fetching 40M records? Received on Thu Mar 30 2006 - 23:23:52 CST