[질문] ROWID를 조건절에 걸어서 Update 하는 경우의 속도차에 대한 질문 0 2 1,121

by 김성률 [2008.06.10 09:27:05]


select  rowid into :row_id from tab_1

update tab_1 set col_1 = 'C' where rowid = :row_id

위와 같이 rowid 를 조건절에 걸어서 update 할 경우와 컬럼(주로 Key 컬럼)을 조건절에 걸어서 update하는 경우와와 속도차이가 분명 있는건지 알고 싶습니다.

by 마농 [2008.06.10 09:41:08]
보통 PK를 이용하여 업데이트를하게되면 다음 과정을 거칩니다.
1. 인덱스스켄하여 rowid를 얻는다
2. rowid를 통해 데이터 갱신
rowid를 이용하면 1번과정을 건너뛰는 것이죠.
한두껀인 경우엔 거의 속도차가 없겠지요.
대용량을 루프 처리하는거라면 분명 속도차이가 나겠지요.

by 윤태호 [2008.06.10 14:42:21]
ORACLE에서 가장 빠른 주소는 ROWID입니다.
물리적 위치 주소를 가지고 있으니 가장 빠릅니다.
INDEX가 걸려진 컬럼도 찾아서 다시 ROWID를 찾아서
가기 때문에 가장 빠른 주소는 ROWID입니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입