Post
GROUP BY VS DISTINCT
회사 내 굉장히 지저분한 뷰를 가지고 수행하는 로직들이 많은데
이 부분에 대해서 쿼리 튜닝을 해야 하는 부분이 있어 경험에 따라 적습니다.
구글링을 했을 시 , DISTINCT 가 GROUP BY 보다 빠르다 이런 부분들이 있는 것 같은데
데이터의 양이나 쿼리 구성에 따라 달라지는 것 같다.
데이터 탐색부분까지 세세하게 확인을 하지는 못했지만
DISTINCT를 걸어줬을 시
2분이 넘는 응답을 기다리는 시간이 있었고
컬럼 하나씩 명시를 해 그룹바이 해줬을 시
7초 정도로 단축되는 결과를 얻을 수 있었다.
해당 뷰 테이블의 전체 데이터 조회 결과는 아래와 같다.
218만개 데이터, 그래도 적지 않은 데이터 양이기 때문에
여러 테이블의 데이터를 조합하여 그 결과가 평균 이상의 데이터를 조회할 시
두 문법에서 차이가 있는 점을 확인하여 데이터를 받아올 때의 응답시간을 줄이는 방법이 있을 것 같다.
ORACLE DB 기준이며, LEGACY 가 아닌 이상에야 10G이상 보통 11G이상을 쓸 텐데
GROUP BY 사용 시 기본적으로 정렬을 하지 않게 된다는 글들이 보이는데 이 때문일 수도 있을 것 같다
DISTINCT하나로 귀찮은 부분을 덜 수 있지만 temp table space에 임시적으로 저장하고 사용하는 방식이기 때문에 데이터가 많고 시스템에 부하를 많이 줄 수 있는 여러번 테스트를 통해 부하를 덜 줄 수 있는 방향으로 가는것이 좋을 것 같다
댓글