반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 정성하
- vuejs
- HTML
- 알람프로그램
- 디자이어HD
- QT
- 자바
- c언어
- 양평역
- 오토바이
- 잡담
- 재귀함수
- QTcpServer
- qt 설치
- android SAF
- 자료구조
- Qt 소켓프로그래밍
- 스타크래프트2
- 바이크
- Qt4
- 마영전
- Java
- FFI
- 이륜차
- 윈도우7
- 스타2
- 고속도로
- 엑티브엑스
- Qt OpenGL
- 안드로이드
Archives
- Today
- Total
프로그래밍과 잡담
[데이터베이스] Group By 관련.. 본문
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 한테 튜닝해달라고 하면 되는거니.
여하튼 나중에 다른데서도 써먹어야 겠군.
반응형
'프로그래밍' 카테고리의 다른 글
다른 언어간 문자열 배열 은 쓰지말아야 겠다. (0) | 2020.06.26 |
---|---|
Rust로 링크드리스트 만들어보기.. (0) | 2019.10.03 |
Rust 언어를 한번 보고 있다.. (0) | 2016.12.05 |
Comments