SQL Tuning Question
Lisa Hu <[email protected]>
| Newsgroups | gmane.comp.db.oracle.toad.free |
|---|---|
| Message-ID | <[email protected]> |
Dear all, I know it’s not a Toad related issue, but would like to ask experts’ help in tuning an Update process. One Update suddenly ran 2 hours vs. normally it runs 10 + minutes. To my knowledge, nothing was changed (of course). Following is the SQL and execution plan. The DB is in 10g. Any help will be greatly appreciated. I am planning to rebuild the indexes and then gather new stats just for sake of better performance. UPDATE prembr_834_data_KY pd1 SET mbr_age = trunc(to_number(file_effective_date - to_date(mbr_ymdbirth,'yyyymmdd'))/365.25 ), class_value = ( SELECT DISTINCT (trim(lockin_grp_new)||trim(lockin_div_new)) FROM prembr_834_lockupdt_KY pu1 WHERE pu1.mbr_medicaid_id = pd1.mbr_medicaid_id AND trim(pu1.class_value_834) = trim(pd1.class_value) ) WHERE mbr_medicaid_id in ( SELECT mbr_medicaid_id FROM prembr_834_lockupdt_KY ); Execution Plan: UPDATE STATEMENT Optimizer=ALL_ROWS (Cost=758) UPDATE OF PREMBR_834_DATA_KY HASH JOIN (RIGHT SEMI) (Cost=758 Cardinality=3992 Bytes=331336) INDEX (FAST FULL SCAN) OF IX_PREMBR_834_LOCKUPDT_01 (INDEX) (Cost=5 Cardinality=2347 Bytes=35205) TABLE ACCESS (FULL) OF PREMBR_834_DATA_KY (TABLE) (Cost=752 Cardinality=3992 Bytes=271456) HASH (UNIQUE) (Cost=11 Cardinality=1 Bytes=53) TABLE ACCESS (BY INDEX ROWID) OF PREMBR_834_LOCKUPDT_KY (TABLE) (Cost=10 Cardinality=1 Bytes=53) INDEX (RANGE SCAN) OF IX_PREMBR_834_LOCKUPDT_01 (INDEX) (Cost=1 Cardinality=9) Thanks, Lisa