코딩하는 문과생

[SQL] 조건이 날짜인 경우, 조회속도 올리는 법 본문

프로그래밍/SQL

[SQL] 조건이 날짜인 경우, 조회속도 올리는 법

코딩하는 문과생 2020. 6. 20. 20:41

[문제]

  최근 시스템에서 varchar2로 저장된 날짜 데이터를 조회하기 위해 조건으로 between을 사용하는 경우를 많이 보았다.

  데이터가 적은 경우는 크게 문제가 되지 않겠지만, 대용량 데이터를 다루는 기업ERP에서는 between에 해당하는 조건만큼 값을 비교하게 되며 엄청난 시스템 과부하가 올 수 있다. 

  지난주 DB스터디를 통해 해당 부분을 빠르게 해결할 수 있는 부분을 알게 되어 리뷰해보고자 한다.

 

[해결방법]

해결방법은 생각보다 간단했다.

1. 날짜 테이블을 새롭게 생성해 테이블 내부에 varchar2 데이터 타입인 날짜 데이터를 저장해놓고,

2. 해당 테이블과 기존 테이블을 Join시켜 날짜에 해당하는 값들만 데이터를 가져오는 방법이다.

 

- 날짜 데이터를 between으로 비교하게 되는 경우를 "선"으로 정의한다면,

- 조인을 이용해 데이터를 다루는 경우는 "점"으로 표현할 수 있다.

 

[느낀점]

  테이블 하나가 추가되어 조인하면 시스템 과부하가 오지 않을까 라는 생각이 들 수도 있지만, 오히려 인덱스를 타거나 데이터를 비교가 아닌 콕콕 집어서 가져오는 경우도 있으므로 잘 생각해보고 활용하면 좋은 효과를 낼 수 있다.