티스토리 뷰
A 테이블을 직원 이라고 하고
B 테이블을 담당업무 라고 하자
* A
ID |
이름 |
1 |
김노노 |
2 |
박예예 |
3 |
최하하 |
* B
ID |
담당업무 | A_ID |
1 |
디자인 | 2 |
2 |
안드로이드 | 1 |
3 |
아이폰 | 1 |
4 |
Database | 1 |
5 |
PHP | 2 |
테이블을 보면..
디자인, php 는 김노노씨가 담당중하고
안드/아이폰/DB는 박예예 씨가 담당중이다.
최하하 씨는 놀고있다..
여기서 아래와 같은 결과를 뽑아오려면 어떻게 해야할까?
이름 |
담당업무 |
최하하 |
NULL |
Left Outer Join을 이용하자.
SELECT A.이름 B.담당업무
FROM A
LEFT OUTER JOIN B
ON A.ID=B.A_ID
WHERE B.담당업무 IS NULL
위와 같이 쿼리를 날릴경우 가능함
그러나 이러한 경우, B테이블의 Record 갯수가 많을 경우 시간이 오래걸린다.
예를들어 A 테이블 직원row가 2000명, B테이블 담당업무row가 30만개 라면...
Full scan하기 때문에..적어도 2~3분은 소요될 것이다.(따로 index같은것이 정확하지 않을 경우)
이럴경우.. 우선 플랫폼단에서 조회항목에 대한 제한을 걸어 B 테이블의 조회 건수를 대폭 줄이거나...
다른 성능 향상을 위한 튜닝을 해보자..
'Computer > DataBase' 카테고리의 다른 글
(MYSQL) 초 -> 00:00:00 형식의 시분초로 변경하기 (1) | 2016.06.21 |
---|---|
(MYSQL) 문자열 자르기 substr (0) | 2016.06.21 |
( MySQL ) 테이블 설계시 유의 (0) | 2016.05.12 |
(MySQL) Left join like사용 (0) | 2016.05.11 |
( MySQL ) 특정 조건 Count 하기 (2) | 2016.05.11 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- xcode
- 손석희
- 앵커브리핑
- nodejs
- mysql
- Phaser
- Android
- C
- GIT
- 서버
- 배열
- 안드로이드
- Kotlin
- 스위프트
- BBC 가쉽
- 뉴스룸
- Node
- CentOS
- 리눅스
- 노드
- git hub
- linux
- node.js
- IOS
- 점유율
- Swift
- Asterisk
- php
- C언어
- 깃헙
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함