Post

GROUP BY VS DISTINCT

#naver-import

원문: https://blog.naver.com/qoxmfaktmxj/223332960227

회사 내 굉장히 지저분한 뷰를 가지고 수행하는 로직들이 많은데

이 부분에 대해서 쿼리 튜닝을 해야 하는 부분이 있어 경험에 따라 적습니다.

구글링을 했을 시 , DISTINCT 가 GROUP BY 보다 빠르다 이런 부분들이 있는 것 같은데

데이터의 양이나 쿼리 구성에 따라 달라지는 것 같다.

데이터 탐색부분까지 세세하게 확인을 하지는 못했지만

DISTINCT를 걸어줬을 시

2분이 넘는 응답을 기다리는 시간이 있었고

컬럼 하나씩 명시를 해 그룹바이 해줬을 시

7초 정도로 단축되는 결과를 얻을 수 있었다.

해당 뷰 테이블의 전체 데이터 조회 결과는 아래와 같다.

218만개 데이터, 그래도 적지 않은 데이터 양이기 때문에

여러 테이블의 데이터를 조합하여 그 결과가 평균 이상의 데이터를 조회할 시

두 문법에서 차이가 있는 점을 확인하여 데이터를 받아올 때의 응답시간을 줄이는 방법이 있을 것 같다.

ORACLE DB 기준이며, LEGACY 가 아닌 이상에야 10G이상 보통 11G이상을 쓸 텐데

GROUP BY 사용 시 기본적으로 정렬을 하지 않게 된다는 글들이 보이는데 이 때문일 수도 있을 것 같다

DISTINCT하나로 귀찮은 부분을 덜 수 있지만 temp table space에 임시적으로 저장하고 사용하는 방식이기 때문에 데이터가 많고 시스템에 부하를 많이 줄 수 있는 여러번 테스트를 통해 부하를 덜 줄 수 있는 방향으로 가는것이 좋을 것 같다

댓글