[SQL] 차이를하는 SQL JOIN
SQL차이를하는 SQL JOIN
무엇 내부 조인 및 외부 (왼쪽, 오른쪽 조인)에 가입 사이의 차이는, 그리고 어떤 그들 중 최상의 성능을 가지고?
감사!
해결법
-
==============================
1.이 문서를 확인하십시오 :
이 문서를 확인하십시오 :
SQL을 시각적으로 설명 조인
내부 가입 :
왼쪽 외부 가입 :
오른쪽 외부 가입 :
-
==============================
2.그들이에 differnt 결과 세트를 제공으로 조인의 유형 간의 성능 comparisions는 무관하다. 내부는 조인이 더 빠른 경우에도 당신은 (조인의 두 번째 테이블과 일치하지 않더라도 레코드를 포함)는 왼쪽의 결과를 필요한 경우 사용할 참여하지 않을 것입니다.
그들이에 differnt 결과 세트를 제공으로 조인의 유형 간의 성능 comparisions는 무관하다. 내부는 조인이 더 빠른 경우에도 당신은 (조인의 두 번째 테이블과 일치하지 않더라도 레코드를 포함)는 왼쪽의 결과를 필요한 경우 사용할 참여하지 않을 것입니다.
-
==============================
3.왼쪽은 당신이 당신의 권리를 다시 작성해야하므로 왼쪽 논리 가입 논리 가입하세요, B RIGHT 일부 RDBMS를 잘 가입하지 않는 A. 가입으로 B가 동일 가입
왼쪽은 당신이 당신의 권리를 다시 작성해야하므로 왼쪽 논리 가입 논리 가입하세요, B RIGHT 일부 RDBMS를 잘 가입하지 않는 A. 가입으로 B가 동일 가입
A 1 2 3 B 2 3 4 3 SELECT A.I FROM INNER JOIN B ON B.I = A.I; output: 2 3, 3 SELECT A.I AS X, B.I AS Y FROM A LEFT JOIN B ON B.I = A.I; read above code as A on LEFT, JOINs B output: X Y 1 NULL 2 2 3 3 3 3 SELECT A.I AS X, B.I AS Y FROM B RIGHT JOIN A ON A.I = B.I;
, 오른쪽에 B로 위의 코드를 읽어 것은 A가 왼쪽에 같은 단지 동일 A. 합류
무엇이든 왼쪽에 항상 평가, 항상 출력을 가지고있다. 당신은 좌 B 가입 상상할 수있는, B 권리는을 같이 가입 :
var result = new Dictionary<int, int?>(); var A = new int[] { 1, 2, 3 }; var B = new int[] { 2, 3, 4, 3 }; foreach (int aElem in A) { bool hasMatch = false; foreach (int bElem in B) { if (bElem == aElem) { result.Add(aElem, bElem); hasMatch = true; } } if (!hasMatch) result.Add(aElem, null); } foreach(int X in result.Keys) { MessageBox.Show(string.Format("X {0} Y {1}", X, result[X].HasValue ? result[X].Value.ToString() : "NULL" )); }
-
==============================
4.왼쪽, 오른쪽, 안쪽과 바깥 쪽은 성능에 영향을주지 않으며, 그들은이었다 아니라 이미 여기에서 설명했다.
왼쪽, 오른쪽, 안쪽과 바깥 쪽은 성능에 영향을주지 않으며, 그들은이었다 아니라 이미 여기에서 설명했다.
그러나 당신이에 추가 할 수있는 힌트는 DO 효과 성능이 조인 있습니다 해시, 루프 및 병합.
일반적으로 쿼리 계획은 어떻게이 어떤 결정하지만, 때때로 당신은 그것을 무시하여 성능을 향상시킬 수 있습니다.
루프 조인 제의 각 행에 대한 두 번째 테이블의 모든 행을 통해 진행한다. 당신은 하나 개의 매우 큰 테이블과 더 작은 하나가 경우에 좋다.
병합 조인 함께 위해 두 테이블을 통해 이동합니다. 두 테이블이 이미 당신이 가입하고있는 필드에 의해 주문하는 경우는 매우 빠르게 할 수 있습니다.
이 조인 된 데이터를 정렬로 해시 그룹에 출력을 임시 테이블의 사용의 많은 참여.
일부 전문가 데시벨은 비트 맵 조인과 같은 다른 유형을 지원합니다.
-
==============================
5.희망 당신은 사진을 이해합니다. 성능 현명한, 그들은 동일하지 않습니다 - 차이.
희망 당신은 사진을 이해합니다. 성능 현명한, 그들은 동일하지 않습니다 - 차이.
편집 : 죄송합니다. 당신이 대답의 일부에 대해 관심이 없었어요 같아요.
from https://stackoverflow.com/questions/419375/sql-join-differences by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server에서 실제 일대일 관계를 만드는 방법 (0) | 2020.03.25 |
---|---|
[SQL] 날짜 범위 사이의 날짜를 생성 (0) | 2020.03.25 |
[SQL] 내부의 'OR'는 조건이 나쁜 생각 JOIN 데? (0) | 2020.03.25 |
[SQL] MySQL은 두 날짜 사이의 차이 (0) | 2020.03.25 |
[SQL] 쉼표로 구분 한 값과 복수의 열 [중복] (0) | 2020.03.25 |