크로스 테이블 데이터 매칭을 위한 내부 조인과 유니온 비교
여러 테이블에서 일치하는 데이터를 검색하려면 데이터베이스 쿼리 방법을 신중하게 고려해야 하는 경우가 많습니다. 이 기사에서는 가장 효과적인 시나리오에 초점을 맞춰 이 작업에 대한 INNER JOIN
및 UNION
의 사용을 대조합니다.
INNER JOIN
대 UNION
INNER JOIN
: 이 작업은 지정된 열의 일치하는 값을 기반으로 둘 이상의 테이블의 행을 연결합니다. 결과 집합에는 조인된 모든 테이블에서 일치 항목이 존재하는 행만 포함됩니다.UNION
: 두 개 이상의 SELECT
문의 결과 집합을 단일 결과 집합으로 결합하여 중복 행을 제거합니다. 결합된 문의 열 수와 데이터 유형이 동일한 것이 중요합니다.예시
두 개의 테이블을 고려해보세요.
tbl_facilitators
: 진행자 정보가 포함되어 있습니다.tbl_facilitatorClasses
: 기본 및 보조 진행자 ID를 포함한 수업 세부정보가 포함되어 있습니다.목표는 각 수업의 기본 및 보조 진행자의 수업 이름과 성과 이름을 검색하는 것입니다.
INNER JOIN
솔루션
이를 달성하기 위해 다음 쿼리는 INNER JOIN
을 사용합니다.
<code class="language-sql">SELECT tbl_facilitatorClasses.className, tbl_facilitators.facilLname AS primary_facilitator_lname, tbl_facilitators.facilFname AS primary_facilitator_fname, tbl_facilitators2.facilLname AS secondary_facilitator_lname, tbl_facilitators2.facilFname AS secondary_facilitator_fname FROM tbl_facilitatorClasses INNER JOIN tbl_facilitators ON tbl_facilitatorClasses.primeFacil = tbl_facilitators.facilID INNER JOIN tbl_facilitators AS tbl_facilitators2 ON tbl_facilitatorClasses.secondFacil = tbl_facilitators2.facilID;</code>
이 쿼리는 tbl_facilitatorClasses
와 tbl_facilitators
를 두 번(두 번째 조인에 대한 별칭 사용) 효율적으로 조인하여 구조화된 단일 결과에서 기본 및 보조 촉진자 모두에 대해 필요한 정보를 검색합니다.
UNION
제한사항
UNION
작업은 이 시나리오에 적합하지 않습니다. UNION
에서는 데이터를 크게 재구성하여 효율성이 떨어지고 읽기 어려운 결과를 생성하며 각 클래스에 대해 원하는 결합 행 구조를 제공하지 않아야 합니다.
결론
이 예에서 볼 수 있듯이 일치하는 열 값을 기반으로 여러 테이블에서 관련 데이터를 검색하는 경우 INNER JOIN
에 비해 UNION
가 훨씬 더 적절하고 효율적인 선택입니다. UNION
은 관계형 키를 기반으로 데이터를 결합하는 것이 아니라 유사한 쿼리의 고유한 결과 집합을 결합하는 데 더 적합합니다.
위 내용은 테이블 전체에서 일치하는 데이터를 효율적으로 검색하는 방법: 내부 조인과 유니온?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!