> 데이터 베이스 > MySQL 튜토리얼 > 테이블 B에 없는 테이블 A의 행을 효율적으로 선택하는 방법은 무엇입니까?

테이블 B에 없는 테이블 A의 행을 효율적으로 선택하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-10-26 06:02:30
원래의
691명이 탐색했습니다.

 How to Efficiently Select Rows from Table A that are Not in Table B?

테이블 B에서 제외된 테이블 A의 효율적인 행 선택

동일한 기본 키를 공유하는 두 테이블(A, B)을 처리할 때, 일반적인 작업은 A에는 있지만 B에는 없는 모든 행을 추출하는 것입니다. "NOT EXISTS" 절을 사용하는 등의 기존 솔루션에서는 성능 문제가 발생할 수 있습니다.

효율성을 높이려면 다음을 활용하는 것이 좋습니다. 왼쪽 조인 접근 방식. 왼쪽 조인 기반 솔루션의 구문은 다음과 같습니다.

SELECT *
FROM A
LEFT JOIN B ON A.x = B.y
WHERE B.y IS NULL;
로그인 후 복사

이 접근 방식은 테이블 A의 각 행을 공통 필드 "x"를 기반으로 조인하여 테이블 B의 해당 행과 비교합니다(가정 존재합니다). "WHERE" 절이 "B.y"가 NULL인 행을 필터링하기 때문에 테이블 B에 일치하는 행이 없는 테이블 A의 행이 반환됩니다.

또는 다음 구문을 사용하세요. 동일한 결과를 얻는 데 사용할 수 있습니다.

SELECT A.*
FROM A
LEFT JOIN B ON A.x = B.y
WHERE B.y IS NULL;
로그인 후 복사

이 구문은 테이블 A의 열만 명시적으로 선택하여 불필요한 데이터가 검색되지 않도록 합니다.

일반적으로 왼쪽 조인 접근 방식은 "NOT EXISTS" 절에 비해 "테이블에 없는 위치 선택" 작업을 수행하는 더 효율적인 방법입니다. 구체적인 성능 향상은 데이터 크기 및 구조에 따라 달라질 수 있지만 특히 테이블 B의 행 수가 테이블 A보다 현저히 작은 경우 왼쪽 조인이 다른 조인보다 성능이 뛰어난 경향이 있습니다.

위 내용은 테이블 B에 없는 테이블 A의 행을 효율적으로 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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