조회 요건과 데이터 특성을 고려하여 데이터 유무 확인을 위한 1건 찾는 로직을 개선한다.

개선 전
- (문제 상황) 상각내역_PK, 입력기본_PK 인덱스를 과다하게 액세스함
- 기준일자가 입력되지 않거나, 입력되더라도 넓은 범위인 경우 SKIP SCAN이 성능에 도움이 될 수 있으나, 상각내역_PK, 입력기본_PK 인덱스 모두 1건 또는 0건을 찾기 위해 너무 많은 인덱스 블록을 읽음(각각 7983블록, 4281블록 읽기)
- (문제 원인) 데이터 유무 확인 로직이 비효율적임
개선 방안
- (개선 방안) 기준일자, 계좌번호 컬럼 순으로 구성된 상각내역_PK를 사용하여 사용자 입력 계좌로 데이터를 1건을 찾을 때, 과거부터 찾는 것 보다 최근부터 찾는게 평균적으로 더 빨리 찾을 수 있음을 전제로, 과거->최근 탐색(순방향 탐색, index_ss힌트 사용) 대신 최근->과거 탐색(역방향 탐색, index_ss_desc힌트 사용)하도록 함(사실 계좌번호+기준일자로 구성된 신규 인덱스를 만드는게 더 확실한 개선 방안임)
- (개선 방안) 입력기본_PK 사용 유도한 index 힌트를 삭제하여, 자연스럽게 계좌번호 선두인 IX02 인덱스가 사용되도록 함
개선 후
- (개선 결과) 2개 인덱스 액세스량이 개선 전 보다 현저히 감소함
댓글
댓글 쓰기