1. 개요
- 30~50만건의 대용량 데이터를 기반으로 특정 데이터를 산출해야 할 경우
- 특히 산출 데이터의 기준이 달라 WITH절 혹은 서브쿼리를 통해 기준 테이블을 다르게 설정해야할 경우
상기와 같은 상황에서 효율적으로 데이터를 산출하는 방법을 찾아보았다.
2. 대용량 통계 쿼리 작성 시 효율적인 방법
- 확실히 WITH절을 사용하면 WITH절을 위한 BUFFER TRANSITION으로 인한 메모리적 관점, hash join 및 index scan 생략으로 인한 성능적 관점에서 불리하다.
- 서브쿼리를 사용할 경우 index scan을 사용할 수 있으며, BUFFER TRANSITION을 진행하지 않으므로 확실히 성능적으로 유리하다.
- 단, 서브쿼리에 비해 with절을 사용할 경우 확실하게 기준 데이터를 구분할 수 있으므로 가독성이나 확장성 측면에서는 서브쿼리보다 더 유리하다.
- 내가 생각한 방법은, 일단 with절로 기준 테이블로 나눈 후 이를 서브쿼리를 통해 일원화하는 과정이 가장 좋을 것 같다.
- 산출 데이터가 작을 경우, 1000건보다 적거나 기준 데이터 산출 크기가 충분히 작다면 with절이 오히려 더 효율적일 수 있고, 3000건보다 크다면 확실히 서브쿼리 절이 빠르고 유리하다.