복붙노트

[SQL] UNION과 UNION ALL의 차이점은 무엇입니까?

SQL

UNION과 UNION ALL의 차이점은 무엇입니까?

UNION과 UNION ALL의 차이점은 무엇입니까?

해결법

  1. ==============================

    1.UNION은 (결과의 모든 열이 동일한 경우), UNION ALL하지 않습니다 중복 레코드를 제거합니다.

    UNION은 (결과의 모든 열이 동일한 경우), UNION ALL하지 않습니다 중복 레코드를 제거합니다.

    데이터베이스 서버가 중복 행을 제거하기 위해 추가 작업을 수행해야하기 때문에, 대신에 UNION ALL의 UNION을 사용하지만 (보고서를 개발 특히) 보통은 중복을하지 않을 경우 성능 저하가 있습니다.

    SELECT 'foo' AS bar UNION SELECT 'foo' AS bar
    

    결과:

    +-----+
    | bar |
    +-----+
    | foo |
    +-----+
    1 row in set (0.00 sec)
    
    SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar
    

    결과:

    +-----+
    | bar |
    +-----+
    | foo |
    | foo |
    +-----+
    2 rows in set (0.00 sec)
    
  2. ==============================

    2.UNION과 UNION ALL 모두 두 개의 서로 다른 SQL을의 결과를 연결할. 그들은 중복을 처리하는 방식에 차이가 있습니다.

    UNION과 UNION ALL 모두 두 개의 서로 다른 SQL을의 결과를 연결할. 그들은 중복을 처리하는 방식에 차이가 있습니다.

    예 : 우리는 두 개의 테이블, 1) 직원 및이있는 경우) 고객

  3. ==============================

    3.UNION ALL하지 않는 반면, UNION은 중복을 제거합니다.

    UNION ALL하지 않는 반면, UNION은 중복을 제거합니다.

    제거하기 위하여 결과 집합을 정렬해야 복제하고,이 조합의 성능에 영향을 미칠 수있다에서, 데이터의 양에 따라 분류하고, 되 WORKAREA_SIZE_POLICY = AUTO 또는 오라클 PGA_AGGREGATE_TARGET위한 다양한 RDBMS 매개 변수 설정 ( SORT_AREA_SIZE와 SOR_AREA_RETAINED_SIZE WORKAREA_SIZE_POLICY 경우 = MANUAL).

    이 메모리에서 수행하지만 데이터의 양에 대해 같은 경고가 적용 할 수있는 경우 기본적으로 정렬이 빠릅니다.

    당신이 중복없이 반환 된 데이터를 필요로하는 경우 물론, 당신은 데이터의 소스에 따라, UNION을 사용해야합니다.

    나는이 자격을 첫 번째 게시물에 댓글을 것이다 코멘트 "훨씬 성능이 좋은 것입니다"하지만, 그렇게 할 충분한 평판 (점)이있다.

  4. ==============================

    4.ORACLE에서 : UNION은 BLOB (또는 CLOB) 열 유형을 지원하지 않습니다, UNION ALL을 수행합니다.

    ORACLE에서 : UNION은 BLOB (또는 CLOB) 열 유형을 지원하지 않습니다, UNION ALL을 수행합니다.

  5. ==============================

    5.http://zengin.wordpress.com/2007/07/31/union-vs-union-all/에서

    http://zengin.wordpress.com/2007/07/31/union-vs-union-all/에서

  6. ==============================

    6.당신은 중복을 방지하고 여전히 같은 쿼리를 실행하여 (UNION 같은 사실은 동일 함) UNION DISTINCT보다 훨씬 빠르게 실행할 수 있습니다 :

    당신은 중복을 방지하고 여전히 같은 쿼리를 실행하여 (UNION 같은 사실은 동일 함) UNION DISTINCT보다 훨씬 빠르게 실행할 수 있습니다 :

    FROM MYTABLE SELECT * A = X UNION ALL SELECT * FROM MYTABLE B = Y 및! = X

    그리고 주목! = X 부분. 이것은 훨씬 더 빨리 다음 UNION입니다.

  7. ==============================

    7.그냥 여기 토론에 내 두 센트를 추가합니다 : 하나는 순수, SET 지향 UNION과 UNION 연산자를 이해할 수 - 예를 들어, 집합 A = {2,4,6,8}, 집합 B = {1,2,3,4}, 유니온 B} = {1,2,3,4,6,8

    그냥 여기 토론에 내 두 센트를 추가합니다 : 하나는 순수, SET 지향 UNION과 UNION 연산자를 이해할 수 - 예를 들어, 집합 A = {2,4,6,8}, 집합 B = {1,2,3,4}, 유니온 B} = {1,2,3,4,6,8

    세트를 처리 할 때, 숫자 2와 4는 요소 또는 세트에없는 중 하나로, 두 번 나타나는 싶지 않을 것이다.

    SQL의 세계에서는, 그러나, 당신은 함께 하나의 "가방"에 두 세트의 모든 요소를 ​​볼 수 {2,4,6,8,1,2,3,4}를 할 수 있습니다. 그리고이 목적을 T-SQL의 이벤트에 대한 연산자 UNION ALL.

  8. ==============================

    8.노동 조합 노조 명령은 명령을 가입 훨씬처럼 두 테이블에서 관련 정보를 선택하는 데 사용됩니다. 조합 명령을 사용할 때, 모든 선택된 열은 동일한 데이터 유형이 될 필요가있다. UNION으로 만 구별 값이 선택된다.

    노동 조합 노조 명령은 명령을 가입 훨씬처럼 두 테이블에서 관련 정보를 선택하는 데 사용됩니다. 조합 명령을 사용할 때, 모든 선택된 열은 동일한 데이터 유형이 될 필요가있다. UNION으로 만 구별 값이 선택된다.

    UNION ALL 연합 ALL 명령 UNION ALL은 모든 값을 선택하는 것을 제외하고는, UNION 명령과 동일하다.

    연합과 연합의 차이는 모든 연합 (EU)의 모든 대신 그냥 테이블에 쿼리 특성 및 콤바인을 맞는 모든 테이블에서 모든 행을 끌어 중복 행을 제거 할 것입니다.

    노조 문 효과적으로 설정 결과에 대한 DISTINCT SELECT 않습니다. 당신이 반환 된 모든 레코드가 노동 조합에서 고유 알고 있다면, UNION ALL 대신,보다 빠르게 결과를 제공합니다 사용합니다.

  9. ==============================

    9.UNION과 UNION ALL은 모든 SQL 서버에서 작동합니다.

    UNION과 UNION ALL은 모든 SQL 서버에서 작동합니다.

    당신은 엄청난 성능 누설 자들은 불필요한 노동 조합 피해야한다. 엄지 손가락 사용 UNION ALL의 규칙으로 당신이 사용하는 확실하지 않은 경우.

  10. ==============================

    10.UNION - 독특한 기록하면서 결과 UNION ALL - 중복을 포함하여 모든 레코드의 결과.

    UNION - 독특한 기록하면서 결과 UNION ALL - 중복을 포함하여 모든 레코드의 결과.

    모두 연산자를 차단하고 따라서 나는 개인적으로 JOINS를 통해 차단 연산자 (등 UNION, INTERSECT, UNION ALL) 언제를 사용하여 선호합니다.

    연합 전체에 비해 저조한 연합 (EU) 작업을 수행하는 다음 예제를 체크 아웃 이유를 설명합니다.

    CREATE TABLE #T1 (data VARCHAR(10))
    
    INSERT INTO #T1
    SELECT 'abc'
    UNION ALL
    SELECT 'bcd'
    UNION ALL
    SELECT 'cde'
    UNION ALL
    SELECT 'def'
    UNION ALL
    SELECT 'efg'
    
    
    CREATE TABLE #T2 (data VARCHAR(10))
    
    INSERT INTO #T2
    SELECT 'abc'
    UNION ALL
    SELECT 'cde'
    UNION ALL
    SELECT 'efg'
    

    UNION ALL와 UNION 연산의 결과는 다음과 같습니다.

    노조 문 효과적으로 설정 결과에 대한 DISTINCT SELECT 않습니다. 당신이 반환 된 모든 레코드가 노동 조합에서 고유 알고 있다면, UNION ALL 대신,보다 빠르게 결과를 제공합니다 사용합니다.

    실행 계획에 고유 정렬 작업에 UNION 결과를 사용. 이 문을 입증 할 증거는 다음과 같습니다 :

  11. ==============================

    11.조합은 두 테이블에서 고유 한 값을 선택하는 데 사용됩니다 노동 조합으로 모두를 포함하여 모든 값을 선택하는 데 사용되는 경우 테이블에서 중복

    조합은 두 테이블에서 고유 한 값을 선택하는 데 사용됩니다 노동 조합으로 모두를 포함하여 모든 값을 선택하는 데 사용되는 경우 테이블에서 중복

  12. ==============================

    12.벤 다이어그램으로 이해하는 것이 좋다.

    벤 다이어그램으로 이해하는 것이 좋다.

    여기 소스에 대한 링크입니다. 좋은 설명이있다.

  13. ==============================

    13.(마이크로 소프트 SQL 서버 온라인 예약에서)

    (마이크로 소프트 SQL 서버 온라인 예약에서)

    UNION [ALL]

    모두

    DISTINCT처럼 찾는 중복 행이 결과에 적용되는 UNION이 너무 오래 걸릴 것입니다.

    SELECT * FROM Table1
    UNION
    SELECT * FROM Table2
    

    의 동일합니다 :

    SELECT DISTINCT * FROM (
        SELECT * FROM Table1
        UNION ALL
        SELECT * FROM Table2) DT
    

    UNION ALL 결과 결과에 임의의 순서로 도시되지만 UNION 결과는 1, 2, 3, ..., N (N = 테이블의 열 번호)의 결과에 적용 ORDER BY으로 도시한다. 당신이 중복 행이없는 경우이 부작용을 볼 수 있습니다.

  14. ==============================

    14.나는 예를 추가,

    나는 예를 추가,

    이 비교 필요하기 때문에 (쿼리를 선택, 오라클 SQL 개발자, F10을 눌러 비용 분석을 볼 수), 느린> - UNION, 별개로 병합된다.

    > 빠른 - UNION ALL, 그것은 별개없이 병합됩니다.

    SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual
    UNION
    SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual;
    

    SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual
    UNION ALL
    SELECT to_date(sysdate, 'yyyy-mm-dd') FROM dual;
    
  15. ==============================

    15.UNION은 하나의 결합 된 테이블에 두 개의 구조적으로 호환 테이블의 내용을 병합합니다.

    UNION은 하나의 결합 된 테이블에 두 개의 구조적으로 호환 테이블의 내용을 병합합니다.

    UNION과 UNION ALL의 차이는 UNION ALL은 중복 레코드를 포함하는 반면 UNION은 중복 레코드를 생략 할 것입니다.

    UNION ALL 결과 세트가 정렬되지 않은 반면 연합 (EU) 결과 세트는 오름차순으로 정렬

    이 중복 행을 제거 할 수 있도록 UNION은 결과 세트에 DISTINCT 수행합니다. UNION ALL은 중복 제거되지 않습니다 때문에 더 빨리 UNION보다 반면. *

    참고 : UNION 어떤 중복을 제거하는 추가 작업을 할 수있는 서버를 필요로하기 때문에 UNION ALL의 성능은 일반적으로 UNION보다 더 나은 될 것입니다. 그래서, 경우에 따라서는 중복이 없을 것이라고 확신이고, 또는 중복을 가진 것이없는 문제이고, UNION ALL의 사용은 성능상의 이유로 권장된다.

  16. ==============================

    16.두 테이블 교사 및 학생이 있다고 가정하자

    두 테이블 교사 및 학생이 있다고 가정하자

    모두이 같은 다른 이름으로 4 열이

    Teacher - ID(int), Name(varchar(50)), Address(varchar(50)), PositionID(varchar(50))
    

    Student- ID(int), Name(varchar(50)), Email(varchar(50)), PositionID(int)
    

    당신은 열 같은 번호가 두 테이블 UNION이나 UNION ALL을 적용 할 수 있습니다. 그러나 그들은 다른 이름 또는 데이터 유형이있다.

    당신이이 개 테이블에 UNION 연산을 적용 할 때, 모든 중복 항목을 무시 (테이블의 행의 모든 ​​열 값이 다른 테이블의 동일). 이처럼

    SELECT * FROM Student
    UNION
    SELECT * FROM Teacher
    

    결과가 될 것입니다

    당신이이 개 테이블에 UNION ALL 연산을 적용 할 때 (2 개 테이블의 행의 열 값의 차이가있는 경우), 그것은 중복 된 모든 항목을 반환합니다. 이처럼

    SELECT * FROM Student
    UNION ALL
    SELECT * FROM Teacher
    

    산출

    공연:

    분명히 UNION ALL 성능은 중복 값을 제거하기 위해 추가 작업을 UNION처럼하는 것이 좋습니다. 당신은 MSSQL에서 보도 CTRL + 1으로 시간 예상 실행에서 해당을 확인하실 수 있습니다

  17. ==============================

    17.아주 간단한 단어에서 UNION과 UNION ALL의 차이는 UNION ALL은 중복 레코드를 포함하는 반면 UNION은 중복 레코드를 생략 할 것입니다.

    아주 간단한 단어에서 UNION과 UNION ALL의 차이는 UNION ALL은 중복 레코드를 포함하는 반면 UNION은 중복 레코드를 생략 할 것입니다.

  18. ==============================

    18.내가 추가 -하고 싶은 한 가지 더

    내가 추가 -하고 싶은 한 가지 더

    연합 (EU) : - 결과 세트는 오름차순으로 정렬됩니다.

    연합 (EU)의 모든 : - 결과 세트가 정렬되지 않습니다. 두 쿼리의 출력은 추가됩니다.

  19. ==============================

    19.연합 대 연합 ALL에서의 SQL의 차이점

    연합 대 연합 ALL에서의 SQL의 차이점

    연합 (EU)에서 SQL은 무엇인가?

    연합 오퍼레이터 설정하는 두 개 이상의 데이터의 결과 세트를 결합하는 데 사용된다.

    Each SELECT statement within UNION must have the same number of columns
    The columns must also have similar data types
    The columns in each SELECT statement must also be in the same order
    

    연합 대 연합 (EU) 전체와 예

  20. ==============================

    20.중대한! 오라클과 MySQL의 차이 : T1이 그들 사이의 중복 행을 가지고 있지만, 개별 중복 행이없는 T2 것을 보자 말. 예 : T1은 2018에서 2017에서 판매 및 T2있다

    중대한! 오라클과 MySQL의 차이 : T1이 그들 사이의 중복 행을 가지고 있지만, 개별 중복 행이없는 T2 것을 보자 말. 예 : T1은 2018에서 2017에서 판매 및 T2있다

    SELECT T1.YEAR, T1.PRODUCT FROM T1
    
    UNION ALL
    
    SELECT T2.YEAR, T2.PRODUCT FROM T2
    

    ORACLE에서 UNION ALL은 두 테이블의 모든 행을 가져옵니다. 동일은 MySQL의에 발생합니다.

    하나:

    SELECT T1.YEAR, T1.PRODUCT FROM T1
    
    UNION
    
    SELECT T2.YEAR, T2.PRODUCT FROM T2
    

    T1과 T2 사이에 중복 된 값이 없기 때문에 ORACLE에서 UNION은 두 테이블의 모든 행을 가져옵니다. 테이블 T2 내에도 테이블 t1 내에서 중복 행하고 있기 때문에 MySQL은 다른 한편으로 결과 집합은 적은 수의 행이있을 것이다!

  21. ==============================

    21.UNION은 다른 한편으로 UNION ALL하지 않는에서 중복 레코드를 제거합니다. 그러나 하나 개의 필요 처리하려고하고 열 및 데이터 유형 같아야 대량의 데이터를 체크한다.

    UNION은 다른 한편으로 UNION ALL하지 않는에서 중복 레코드를 제거합니다. 그러나 하나 개의 필요 처리하려고하고 열 및 데이터 유형 같아야 대량의 데이터를 체크한다.

    노조는 내부적으로 행을 선택 "별개"동작을 사용하기 때문에, 따라서 그것은 시간과 성능면에서 비용이 많이 드는 것입니다. 처럼

    select project_id from t_project
    union
    select project_id from t_project_contact  
    

    이 날 2020 명 기록을 제공합니다

    반면에

    select project_id from t_project
    union all
    select project_id from t_project_contact
    

    나에게 이상 17,402 행을 제공합니다

    우선 순위의 관점에서 모두 같은 우선 순위를가집니다.

  22. ==============================

    22.더 ORDER BY가없는 경우 UNION ALL은 간다 행이 매우 한 번에 당신에게 전체 결과 세트를주기 전에 쿼리의 종료 할 때까지 기다려야 할 것 UNION 반면, 다시 가져올 수 있습니다. 말하자면 같은 UNION ALL이 연결이 살아 유지 -이 타임 아웃 상황에서 차이를 만들 수 있습니다.

    더 ORDER BY가없는 경우 UNION ALL은 간다 행이 매우 한 번에 당신에게 전체 결과 세트를주기 전에 쿼리의 종료 할 때까지 기다려야 할 것 UNION 반면, 다시 가져올 수 있습니다. 말하자면 같은 UNION ALL이 연결이 살아 유지 -이 타임 아웃 상황에서 차이를 만들 수 있습니다.

    당신이 시간 초과 문제를 가지고, 거기에는 정렬이 없습니다, 중복이 문제가되지 않습니다 경우에 따라서, UNION ALL 오히려 도움이 될 수 있습니다.

  23. ==============================

    23.UNION과 UNION ALL 두 개 이상의 쿼리 결과를 결합하는 데 사용됩니다.

    UNION과 UNION ALL 두 개 이상의 쿼리 결과를 결합하는 데 사용됩니다.

    을 제거해 행을 복제하는 두 테이블에서 UNION 명령을 선택 독특하고 관련 정보를 제공합니다.

    한편, UNION ALL 명령 선택 모두 표시 모든 행 테이블 양의 값.

  24. ==============================

    24.습관으로, 항상은 UNION ALL을 사용합니다. 당신이 매우 지저분 할 수 있습니다 중복을 제거해야하는 경우 특별한 경우에만 UNION을 사용하여 여기에 다른 의견에 대해 모두를 읽을 수 있습니다.

    습관으로, 항상은 UNION ALL을 사용합니다. 당신이 매우 지저분 할 수 있습니다 중복을 제거해야하는 경우 특별한 경우에만 UNION을 사용하여 여기에 다른 의견에 대해 모두를 읽을 수 있습니다.

  25. ==============================

    25.UNION ALL은 또한뿐만 아니라 더 많은 데이터 유형에서 작동합니다. 예를 들어 노동 조합 공간 데이터 유형에 시도 할 때. 예를 들면 :

    UNION ALL은 또한뿐만 아니라 더 많은 데이터 유형에서 작동합니다. 예를 들어 노동 조합 공간 데이터 유형에 시도 할 때. 예를 들면 :

    select a.SHAPE from tableA a
    union
    select b.SHAPE from tableB b
    

    슬로우합니다

    데이터 형 형상은 UNION, 교차 피연산자로 사용하거나 유사한 없기 때문에 운영자 EXCEPT 수 없다.

    그러나 노조는 모두하지 않습니다.

  26. ==============================

    26.유일한 차이점은 다음과 같습니다

    유일한 차이점은 다음과 같습니다

    "UNION"제거합니다 행을 복제.

    "UNION ALL은"중복 행을 제거하지 않습니다.

  27. from https://stackoverflow.com/questions/49925/what-is-the-difference-between-union-and-union-all by cc-by-sa and MIT license