MYSQL_UNION , UNION ALL 차이점, 설명
2022. 5. 31. 15:36ㆍ[DB]/[MySQL]_
728x90
반응형
TABLE 1]
TABLE 2]
TABLE 3]
이런 3가지 테이블이 있다고 가정합니다.
UNION : 쿼리의 결과를 합칩니다. 단 중복된 쿼리가 있으면 한가지만 출력합니다.
select bno
, date
from 테이블 1번
where 조건문 기입
union
select bno
, date
from 테이블 2번
where 조건문 기입
union
select bno
, date
from 테이블 3번
where 조건문 기입
단 중복을 검사하는데 시간이 걸려 중복을 제거하지 않는 UNION ALL 보다는 속도가 느립니다.
결과 :
UNION ALL : UNION 과 같으나, 중복이 있어도 제거하지 않고 전부 합해서 보여줍니다.
select bno
, date
from 테이블 1번
where 조건문 기입
union all
select bno
, date
from 테이블 2번
where 조건문 기입
union all
select bno
, date
from 테이블 3번
where 조건문 기입
결과:
UNION 이나 UNION ALL 의 경우 임시 테이블을 메모리에 생성하고 서브쿼리의 결과를 임시테이블에 복사하고
임시 테이블을 읽어서 클라이언트에 결과를 전송합니다.
임시 테이블이 커지면 디스크 임시 테이블로 변경하게 되고,
UNION 의 경우 임시 테이블의 모든 컬럼으로 유니크 hash 인덱스를 생성하게 되서
UNION 이 ALL 보다 문제발생률이 높습니다.
좋은 방법은 아니나, 적거나, 쿼리량이 적을 경우 사용 가능합니다.
만약 사용해야한다면 필요한 컬럼 내에서 작동하게 해서 임시테이블 생성을 줄여야 속도가 나옵니다.
감사합니다.
728x90
반응형
'[DB] > [MySQL]_' 카테고리의 다른 글
Partition 이란? (0) | 2024.03.26 |
---|---|
[WITH RECURSIVE]_재귀 쿼리 사용법 (0) | 2022.06.29 |
[MySQL]_Mybatis 의 choose, when , otherwise 개념,사용 (0) | 2022.06.09 |
[MySQL]_서브쿼리 개념 (feat. select , from , where) (0) | 2022.05.31 |