기본 콘텐츠로 건너뛰기

사례 : 최종/최초 이력 액세스 로직 개선

수천 건 이상의 데이터를 읽은 후 MAX/MIN 함수를 통해 최종 또는 최초 이력을 얻는 것이 당연할 수도 있겠지만, 다양한 방법을 통해 최종 또는 최초 데이터에 직접 도달하는 효율적인 방안이 있을 수 있다.


개선 전

  1. (문제 상황) 넓은 범위의 데이터를 액세스함(그룹핑 전까지 12천건, 그룹핑 후에도 3.4천건)


개선 방안


  1.  (문제 원인) 작성된 SQL 로직과 트레이스 결과를 분석해 보면, 거래상세 테이블에서 계좌별 최종 이력 데이터 1건만  액세스하는 것이 아니라, 계좌의 모든 이력을 액세스하고, GROUP BY 구문을 통해 최종 이력 데이터를 선택했음을 알 수  있음
  2. (개선 방안) 계좌별 최종 이력 데이터 1건만 액세스하도록 로직을 개선함

개선 후


  1. (개선 결과) 최종 순번 찾는 로직 부분의 액세스량이 개선 전보다 현저히 감소함
  2. 참고로 수정 후와 같이 SQL을 작성하고, 조건에 부합하는 인덱스가 있으면, ‚INDEX RANGE SCAN (MIN/MAX)와 FIRST FOW‛  오퍼레이션이 등장함

댓글

댓글 쓰기