| TABLE ACCESS BY INDEX ROWID |T_ADDR_DETAIL | 2 K | 74 K | 43 | | | | | | "USER_ID"='lee9982' AND "HP" IS NOT NULL |
| INDEX RANGE SCAN |IN_T_ADDR_DETAIL03 | 3 K | | 10 | | | | | "PARENT_NO"=15 | |
위와 같습니다.
그리고 두번째 문제는 중복된 데이터들을 DELETE 하는 부분인데요,
삭제의 조건이 중복된 데이터를 모두 삭제하는 조건이구요, 두번째 조건은
선택된 그룹번호에 대한 데이터들을 삭제하는 조건입니다.
쿼리
DELETE FROM T_ADDR_DETAIL a
WHERE ROWID > (SELECT MIN(ROWID) FROM T_ADDR_DETAIL B
WHERE A.HP = B.HP AND B.PARENT_NO = 15)
실행계획
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|Operation | Object Name | Rows | Bytes | Cost | Object Node | In/Out | PStart | PStop | Access Predicates | Filter Predicates |
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SELECT STATEMENT Optimizer Mode=ALL_ROWS | | 10 | 610 | 45 | | | | | | |
| VIEW | | 10 | 610 | 45 | | | | | | "RNUM">=6 |
| COUNT STOPKEY | | | | | | | | | | ROWNUM<=10 |
| VIEW | | 2 K | 104 K | 45 | | | | | | "CNT">1 |
| SORT ORDER BY | | 2 K | 74 K | 45 | | | | | | |
| WINDOW SORT | | 2 K | 74 K | 45 | | | | | | |
| TABLE ACCESS BY INDEX ROWID |T_ADDR_DETAIL | 2 K | 74 K | 43 | | | | | | "USER_ID"='lee9982' AND "HP" IS NOT NULL |
| INDEX RANGE SCAN |IN_T_ADDR_DETAIL03 | 3 K | | 10 | | | | | "PARENT_NO"=15 | |
위와 같이 합니다. 삭제엔 5초 정도 걸립니다. 그런데 문제는 15번 그룹에 속한 데이터는 8761건인데
툴에서 삭제(Commit 안하고)해보면 Delete record가 11192로 나옵니다. 혹시 쿼리에 문제가 있나요?
고수님들의 많은 조언 부탁드립니다.