아래와 같은 두 개의 테이블이 있다고 가정합니다.
TABLE_A TABLE_B
----------------- -----------------
FLD1 FLD1
----------------- -----------------
1 5
2 3
3 1
----------------- -----------------
이 때...
SELECT FLD1 FROM TABLE_A
UNION ALL
SELECT FLD1 FROM TABLE_B
하면 결과는
-----------------
FLD1
-----------------
1
2
3
5
3
1
-----------------
이 됩니다. 두 쿼리의 결과를 단순히 합친 것이죠.
그런데
SELECT FLD1 FROM TABLE_A
UNION
SELECT FLD1 FROM TABLE_B
하면 결과는
-----------------
FLD1
-----------------
1
2
3
5
-----------------
이 됩니다. 두 테이블의 결과를 합치되, 중복된 값을 제외하죠.
이렇게 중복을 제거하기 위해 불가피하게 '소트'를 하게 됩니다.
따라서 자료가 많거나 Index가 되어 있지 않은 필드를 대상으로 하게 되면
쿼리 시간이 길어질 수 있습니다.
'DataBase > Sql' 카테고리의 다른 글
[Sql] DB2 - 해당 년월일의 일 수 구하기 (0) | 2010.09.10 |
---|---|
[Sql] Mysql - Rownum 사용하여 건수 조절 (0) | 2010.08.24 |
[Sql] Oracle - DDL(Alter table(컬럼)) (0) | 2010.07.06 |
[Sql] Oracle - 특정 컬럼의 comment알아내기 (0) | 2010.06.29 |
[Sql] Oracle - 정규화 예제 (0) | 2010.06.07 |