> 데이터 베이스 > MySQL 튜토리얼 > 테이블 전체에서 일치하는 데이터를 효율적으로 검색하는 방법: 내부 조인과 유니온?

테이블 전체에서 일치하는 데이터를 효율적으로 검색하는 방법: 내부 조인과 유니온?

Susan Sarandon
풀어 주다: 2025-01-15 11:43:45
원래의
665명이 탐색했습니다.

How to Efficiently Retrieve Matching Data Across Tables: Inner Join vs. Union?

크로스 테이블 데이터 매칭을 위한 내부 조인과 유니온 비교

여러 테이블에서 일치하는 데이터를 검색하려면 데이터베이스 쿼리 방법을 신중하게 고려해야 하는 경우가 많습니다. 이 기사에서는 가장 효과적인 시나리오에 초점을 맞춰 이 작업에 대한 INNER JOINUNION의 사용을 대조합니다.

INNER JOINUNION

  • 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_facilitatorClassestbl_facilitators를 두 번(두 번째 조인에 대한 별칭 사용) 효율적으로 조인하여 구조화된 단일 결과에서 기본 및 보조 촉진자 모두에 대해 필요한 정보를 검색합니다.

UNION 제한사항

UNION 작업은 이 시나리오에 적합하지 않습니다. UNION에서는 데이터를 크게 재구성하여 효율성이 떨어지고 읽기 어려운 결과를 생성하며 각 클래스에 대해 원하는 결합 행 구조를 제공하지 않아야 합니다.

결론

이 예에서 볼 수 있듯이 일치하는 열 값을 기반으로 여러 테이블에서 관련 데이터를 검색하는 경우 INNER JOIN에 비해 UNION가 훨씬 더 적절하고 효율적인 선택입니다. UNION은 관계형 키를 기반으로 데이터를 결합하는 것이 아니라 유사한 쿼리의 고유한 결과 집합을 결합하는 데 더 적합합니다.

위 내용은 테이블 전체에서 일치하는 데이터를 효율적으로 검색하는 방법: 내부 조인과 유니온?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿