조합 또는 가입 사용 - 더 빠른 것
테이블이 있는지 궁금할 뿐인데, 결합을 하셨다면 결합을 하시는 것이 결합을 하는 것보다 더 효율적이실까요?
조인이 더 많은 열을 생성한다는 것은 알지만 이것이 더 이론적입니다. 조인이 해야 하는 것처럼 다른 테이블에 대한 중첩 루프 스캔을 조합에서 수행해야 하는 것처럼 다른 테이블에 대해 중첩 루프 스캔을 수행해야 합니까?
Union은 첫 번째 SELECT 문을 간단히 통과한 다음 두 번째 SELECT 문을 파싱하고 결과를 출력 테이블의 끝에 추가하기 때문에 더 빠릅니다.
조인은 두 테이블의 각 행을 거치며 다른 테이블에서 일치하는 항목을 찾습니다. 따라서 각 행과 모든 행에 대해 일치하는 행을 검색하기 때문에 훨씬 더 많은 처리가 필요합니다.
편집
유니언, 제 말은 유니언 올이 당신이 달성하려는 것에 적합해 보였기 때문입니다.일반적으로 일반적인 연합이 가입보다 빠릅니다.
EDIT 2 (@seebiscuit의 코멘트에 응답)
저는 그의 의견에 동의하지 않습니다.엄밀히 말하면, 아무리 좋은 가입자라도 "JOIN"은 여전히 순수한 연결보다 더 비쌉니다.블로그 코드로 증명하려고 블로그에 글을 올렸습니다.PERF[도트]넷실제로는 완전히 다른 두 가지 목적에 도움이 되며 색인 작업이 올바른지 확인하고 작업에 적합한 도구를 사용하는 것이 더 중요합니다.
엄밀히 말하면, 제 블로그 포스트에서 가져온 다음 두 가지 실행 계획을 사용하여 요약할 수 있다고 생각합니다.
UNION ALL
실행계획
JOIN
실행계획
실무결과
클러스터 인덱스 룩업에 대한 차이는 실질적으로 무시할 수 있습니다.
JOIN
그리고.UNION
두 가지 목적이 있습니다.JOIN
선택 기준 및 추가 열을 추가하기 위해 쿼리에 추가 테이블을 추가하는 데 사용됩니다.UNION
두 개의 서로 다른 쿼리의 결과를 동일한 열로 결합하는 데 사용됩니다.어떤 것이 더 효율적인지 묻는 것은 "빵 한 덩어리"와 "바람 부는" 중 어떤 것이 더 "오렌지"인지 묻는 것과 같습니다.
파티를 망쳐서 미안하지만, 잘 작성된 가입이 조합보다 빠를 겁니다.
- 더 가벼운 통계 수집 모델을 사용합니다(랜덤 다이브가 아닌 카디널리티 기준).
- 쿼리는 한 번만 구문 분석됩니다(여러 개의 하위 선택 평가 필요 없음).
- 결과 집합은 유혹적으로 실현되지 않습니다(UNION ALL에 대해서도 균등해집니다).
단일 SELECT는 테이블당 하나의 인덱스만 사용합니다.UNION은 UNION에서 SELECT당 하나의 인덱스를 사용할 수 없습니다.
UNION은 더 빠른 질의 결과를 가져올 수 있는 인덱스를 더 잘 활용할 것입니다.
언급URL : https://stackoverflow.com/questions/2309936/use-a-union-or-a-join-what-is-faster
'programing' 카테고리의 다른 글
Quickest way to initialize an array of structures to all-0's? (0) | 2023.11.06 |
---|---|
MySQL로 .sql 파일을 가져오면 기존 db를 덮어쓰나요 아니면 추가하나요? (0) | 2023.11.06 |
PHP나 자바스크립트를 사용하지 않고 콘텐츠에 맞게 텍스트 영역을 확장할 수 있는 방법이 있습니까? (0) | 2023.11.06 |
$(이것은)serialize() -- 값을 추가하는 방법을 지정합니다. (0) | 2023.11.06 |
C의 문자열을 빈 문자열로 초기화 (0) | 2023.11.06 |