SQL에서는 UNION
, INTERSECT
및 운영자를 EXCEPT
두 개 이상의 선택된 명령문의 결과를 결합하는 데 사용됩니다. 각 연산자는 고유 한 기능 및 사용 사례가 있습니다.
Union :이 연산자는 둘 이상의 선택 문의 결과 세트를 단일 결과 세트로 결합하는 데 사용됩니다. UNION ALL
사용되지 않는 한 최종 결과에서 중복 행을 제거합니다. 여기에는 복제물이 포함됩니다. 선택 문의 구조는 동일해야하므로 동일한 수의 열이 있어야하며 해당 열에 호환되는 데이터 유형이 있어야합니다.
구문 :
<code class="sql">SELECT column1, column2 FROM table1 UNION SELECT column1, column2 FROM table2;</code>
교차 :이 연산자는 선택 문의 결과 세트에 공통적 인 행만 반환합니다. UNION
과 마찬가지로 SELECT 문은 동일한 구조를 가져야합니다.
구문 :
<code class="sql">SELECT column1, column2 FROM table1 INTERSECT SELECT column1, column2 FROM table2;</code>
제외 : 일부 데이터베이스 시스템에서 MINUS
라고도하는이 연산자는 두 번째 선택 문에없는 첫 번째 선택 문에서 모든 행을 반환합니다. 다시, 선택 진술은 구조적으로 호환되어야합니다.
구문 :
<code class="sql">SELECT column1, column2 FROM table1 EXCEPT SELECT column1, column2 FROM table2;</code>
이 연산자 간의 주요 차이점은 여러 Select 문의 데이터를 처리하는 방법을 기반으로합니다.
UNION ALL
사용되지 않는 한). 중복 항목을 제거 해야하는 다른 소스에서 데이터를 집계하려는 경우 사용됩니다. 요약하면, UNION
데이터를 결합하고 잠재적으로 복제 할 수 있으며, INTERSECT
공통 데이터를 찾을 수 있으며, 다른 세트에서 찾을 수없는 한 세트에서 고유 한 데이터를 분리하는 EXCEPT
.
노조 예 : 이름과 부서가 포함 된 두 개의 테이블, employees
및 contractors
있는 데이터베이스를 관리한다고 가정합니다. 복제품이없는 회사의 모든 직원의 전체 목록을 원한다면 UNION
사용할 수 있습니다.
<code class="sql">SELECT name, department FROM employees UNION SELECT name, department FROM contractors;</code>
교차 예 : event1_attendees
및 event2_attendees
에 저장된 두 가지 다른 이벤트에서 출석을 추적한다고 상상해보십시오. 누가 두 행사에 참석했는지 알아 보려면 INTERSECT
사용할 수 있습니다.
<code class="sql">SELECT attendee_id FROM event1_attendees INTERSECT SELECT attendee_id FROM event2_attendees;</code>
예제 : 계정이 있지만 주문을 한 적이없는 고객을 찾으려면 각각 customers
과 orders
테이블에 저장되면 EXCEPT
사용할 수 있습니다.
<code class="sql">SELECT customer_id FROM customers EXCEPT SELECT customer_id FROM orders;</code>
UNION
사용하거나 INTERSECT
또는 EXCEPT
쿼리 최적화는 성능을 크게 향상시킬 수 있습니다. 몇 가지 팁은 다음과 같습니다.
UNION
UNION ALL
사용하십시오. UNION ALL
중복을 확인하고 제거 할 필요가 없기 때문에 더 빠릅니다.UNION
, INTERSECT
또는 EXCEPT
하기 전에 개별 SELECT
명령문 내의 WHERE
을 적용하십시오. 이로 인해 이러한 연산자가 처리 한 데이터의 양이 줄어 듭니다.SELECT
문에 사용 된 열이 올바르게 인덱싱되어 있는지 확인하십시오. 인덱스는 특히 큰 테이블에서 데이터 검색 속도를 크게 높일 수 있습니다.UNION
대신 UNION ALL
사용하는 경우 불필요하게 쿼리 속도를 늦출 수 있습니다. DISTINCT
필요한지 항상 평가하십시오.SELECT
문의 효율성에 따라 달라 지므로 쿼리의 각 부분을 개별적으로 최적화하십시오. 이러한 최적화 전략을 따르면 UNION
, INTERSECT
또는 운영자를 EXCEPT
SQL 쿼리의 성능을 향상시킬 수 있습니다.
위 내용은 SQL의 운영자를 제외하고 Union, Intersect 및 Exector를 사용하려면 어떻게합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!