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 |
Tags
- 한빛미디어
- SQL
- Pandas
- 서평
- 블로그
- matplotlib
- Ga
- Google Analytics
- 시각화
- Visualization
- 리눅스
- Linux
- 통계학
- 딥러닝
- 한빛미디어서평단
- MySQL
- MATLAB
- 월간결산
- python visualization
- 독후감
- Tistory
- 파이썬
- 서평단
- 파이썬 시각화
- 티스토리
- 텐서플로
- Blog
- Python
- tensorflow
- 매틀랩
Archives
- Today
- Total
pbj0812의 코딩 일기
[SQL] not in 과 left join 연산 시간 비교 실험(2/2) 본문
0. 목표
- not in 과 left join 연산 시간 비교 실험
- index 변경 / 추가
1. 실습 준비
1) 데이터 및 테이블 생성 (링크)
2) index 확인
- 없음
SHOW INDEX FROM sql_test.df_a;
SHOW INDEX FROM sql_test.df_b;
3) 테이블에 index 추가
ALTER TABLE sql_test.df_a ADD INDEX idx (a);
ALTER TABLE sql_test.df_b ADD INDEX idx (a);
4) index 확인
- btree 형식
SHOW INDEX FROM sql_test.df_a;
SHOW INDEX FROM sql_test.df_b;
2. 실습1
1) not in 을 통한 연산
- 0.084 sec / 0.0000081 sec
SELECT COUNT(A.a)
FROM sql_test.df_a AS A
WHERE
A.a not in (
SELECT a FROM sql_test.df_b);
2) left join 을 통한 연산
- 0.215 sec / 0.000015 sec
SELECT COUNT(A.a)
FROM sql_test.df_a AS A
LEFT JOIN sql_test.df_b AS B
ON A.a = B.a
WHERE B.a IS NULL;
3. 실습2
- pk 부여
ALTER TABLE sql_test.df_a ADD PRIMARY KEY (a);
ALTER TABLE sql_test.df_b ADD PRIMARY KEY (a);
1) not in 을 통한 연산
- 0.039 sec / 0.000017 sec
- index 만을 부여하였을 때 대비 연산시간이 절반으로 감소
SELECT COUNT(A.a)
FROM sql_test.df_a AS A
WHERE
A.a not in (
SELECT a FROM sql_test.df_b);
2) left join 을 통한 연산
- 0.337 sec / 0.0000081 sec
- index 만을 부여하였을 때 대비 연산시간이 1.5배 증가
SELECT COUNT(A.a)
FROM sql_test.df_a AS A
LEFT JOIN sql_test.df_b AS B
ON A.a = B.a
WHERE B.a IS NULL;
4. 결과
- index 를 부여하면 하지 않았을 때 대비하여 시간이 확연히 주는 것을 확인
- not in 보다 left join이 연산량이 빠르다는 것도 항상 옳은 이야기는 아님
5. 참고
'ComputerLanguage_Program > SQL' 카테고리의 다른 글
[SQL] 전화번호 전처리 하기 (0) | 2020.11.07 |
---|---|
[SQL] LAG 함수를 이용한 전일대비 증가분 계산 (0) | 2020.11.03 |
[SQL] not in 과 left join 연산 시간 비교 실험(1/2) (0) | 2020.10.15 |
[SQL] MySQL lock 실습 (0) | 2020.09.16 |
[SQL] MySQL ROLLBACK 실습하기 (0) | 2020.09.15 |
Comments