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
- 블로그
- 한빛미디어서평단
- 월간결산
- Google Analytics
- MySQL
- 시각화
- 티스토리
- SQL
- 매틀랩
- Ga
- 파이썬
- Pandas
- Blog
- Linux
- tensorflow
- Visualization
- Python
- MATLAB
- 통계학
- Tistory
- 파이썬 시각화
- 서평
- 딥러닝
- 독후감
- 텐서플로
- python visualization
- 한빛미디어
- 서평단
- matplotlib
- 리눅스
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