프로그래밍과 잡담

[데이터베이스] Group By 관련.. 본문

프로그래밍

[데이터베이스] Group By 관련..

크레온 2023. 7. 14. 23:07
SELECT 
  NAME
  ,SUM(COL1)
FROM TAB1  -- 데이터가 졸라 많은 테이블
WHERE COL2 = 'abcd'
GROUP BY NAME

Group BY는 사용 할 때 조심해야한다.

 

왜냐하면 테이블의 데이터가 매우 많을 경우, Group BY 를 걸면 조회 시 더럽게 오래 걸리게 된다.

 

그냥 오래걸리는게 아니라 더럽게 오래 걸린다.

대충 1천만건이 있다치면 거의 1시간이 걸려도 안나올 거임.

 

해결 방법은 바로 GROUP BY를 걸면 안되고, 먼저 SELECT를 통해서 내가 필요로 하는 데이터만 필터링을 하고 나서

 

그걸  감싸아서 그 위에서 Group By 를 해줘야 된다.

 

-- 대충 해결법은 아래와 같이, 아래서 필터링을 걸고 나서 group by를 위에서 처리해야 함.

SELECT 
NAME,
SUM(COL1)
FROM ( 
	SELECT 
      NAME
      ,COL1
    FROM TAB1  -- 데이터가 졸라 많은 테이블
    WHERE COL2 = 'abcd'
)
GROUP BY NAME

 

그럴 경우 거의 1시간 이상 걸리는 쿼리가 2초 내외로 처리되는 기적을 볼 수 있음..

 

프로젝트하면서 동료의 AS-IS 쿼리가 엄청 느리다고 하길래, 한번 돌렸더니 1시간 돌려도 안나온다고 해서 위의 방법을 해결함 ㅋ 

 

사실 이 해결 법은 얻어 걸린거라 ㅋㅋㅋ 하다보니까 해결된거지.. 뭐 아마 DB 튜닝하는 사람들은 기본적으로 아는거 겠지.

 

뭐 어차피  사실 프로그래머가 여기까지 할 일은 아니지.  DBA 한테 튜닝해달라고 하면 되는거니.

 

여하튼 나중에 다른데서도 써먹어야 겠군.

 

 

 
 
 
반응형
Comments