개발관련일지

MySQL ] 서브쿼리 UNION 본문

개발기록/DB

MySQL ] 서브쿼리 UNION

BEECHANGBOT 2020. 4. 23. 16:47

두개의 테이블을 하나의 테이블로 연결 하고 싶을 때 사용하고 몇개라도 계속 연결 할 수 있음

 

SQL에서 제안하는 집합 연산 >> UNION

UNION DISTINCT, UNION ALL 두가지가 존재함 일반적으로 사용하는 UNION은 DISTINCT를 줄여서 사용하는거다

 

사용 시 규칙

- 하나의 order by 만 사용 할 수 있다

- 중복되는 레코드가 있으면 하나만 출력된다. ( 중복 값도 사용 하고프면 UNION ALL을 사용해야함)

 

UNION DISTINCT 사용에서 A B C 테이블을 합칠시 MySQL에서 처리과정 

1. 임시 테이블(Temporary Table) 생성 ( 들어오는 모든 컬럼에 대해서 인덱스를 생성)

2. A B C의 select를 임시 테이블에 복사

3. 임시 테이블을 읽어서 클라에 결과 전송 후 임시 테이블삭제

>> 임시테이블로 만들고 넣는 과정에서 내용물이 많다면 성능차이가 발생함.

 

>>

1. 유니온 사용자체가 좋은건 아니라함

2. 레코드의 중복 발생 확률 혹은 큰 문제 안생기면 ALL을 사용하기

3. 사용시의 최소한의 컬럼만 SELECT하기

 

사용법 -

SELECT * FROM Atable (UNION or UNION ALL) SELECT * FROM Btable 

 

참고

http://intomysql.blogspot.com/2011/01/union-union-all.html

https://futurists.tistory.com/18

 

'개발기록 > DB' 카테고리의 다른 글

MYSQL ] primary key 초기화하기  (0) 2020.04.20