> 데이터 베이스 > MySQL 튜토리얼 > 어느 것이 더 낫습니까? 다중 JOIN 절 또는 중복 테이블 조회를 위한 ON 절의 OR 조건?

어느 것이 더 낫습니까? 다중 JOIN 절 또는 중복 테이블 조회를 위한 ON 절의 OR 조건?

Patricia Arquette
풀어 주다: 2025-01-07 07:24:41
원래의
593명이 탐색했습니다.

Which is Better: Multiple JOIN Clauses or an OR Condition in the ON Clause for Duplicate Table Lookups?

중복 조회를 위한 테이블 조인 최적화

동일한 테이블을 두 번 조인하는 경우 일반적으로 두 가지 접근 방식이 있습니다. 여러 JOIN 절을 사용하거나 ON 절의 OR 조건

다중 JOIN 절(방법 1):

귀하의 예에서 설명한 것처럼 이 방법에는 각 일치 조건에 대해 별도의 JOIN을 생성하는 작업이 포함됩니다.

SELECT t1.PhoneNumber1, t1.PhoneNumber2, 
   t2.SomeOtherFieldForPhone1, t3.someOtherFieldForPhone2
FROM Table1 t1
INNER JOIN Table2 t2
   ON t2.PhoneNumber = t1.PhoneNumber1
INNER JOIN Table2 t3
   ON t3.PhoneNumber = t1.PhoneNumber2
로그인 후 복사

이 접근 방식은 간단하며 다음을 보장합니다. 결과 데이터에는 필요한 모든 열이 포함됩니다.

ON 절의 OR 조건(메서드 2):

이 방법은 JOIN 조건을 하나로 결합하여 쿼리를 단순화하려고 시도합니다.

SELECT ...
FROM Table1
INNER JOIN Table2 
   ON Table1.PhoneNumber1 = Table2.PhoneNumber OR
      Table1.PhoneNumber2 = Table2.PhoneNumber
로그인 후 복사

그러나 이 방법을 사용하면 다음과 같은 경우 결과 집합에 중복 행이 발생할 수 있습니다. 주어진 행에 대해 두 일치 조건이 모두 충족됩니다.

최적 연습:

선호되는 방법은 여러 JOIN 절이 있는 방법 1입니다. 이는 데이터 중복을 피하면서 특정 기준에 따라 테이블을 조인하는 보다 명확하고 안정적인 방법을 제공합니다.

중복 조인 방지:

중복 조인을 피하는 것이 중요합니다. 적절한 별칭과 명명 규칙을 사용합니다. 예를 들어, 다음 쿼리는 단순화될 수 있습니다.

SELECT t.PhoneNumber1, t.PhoneNumber2, 
   t1.SomeOtherFieldForPhone1, t1.someOtherFieldForPhone1
FROM Table1 t
JOIN Table2 t1 ON t1.PhoneNumber = t.PhoneNumber1
JOIN Table2 t2 ON t2.PhoneNumber = t.PhoneNumber2
로그인 후 복사

조인된 테이블(예: t1 및 t2)에 별칭을 지정하면 중복을 줄이고 쿼리의 가독성을 높일 수 있습니다.

위 내용은 어느 것이 더 낫습니까? 다중 JOIN 절 또는 중복 테이블 조회를 위한 ON 절의 OR 조건?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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