2009-09-19 6 views
0

약 5 개의 다른 테이블을 사용하여 내 테이블에 왼쪽 외부 조인을 수행하고 있으며이 5 개의 테이블 중 하나에서만 결과가 필요합니다.5 개의 조인? 그 중 하나만 결과가 필요하지만 순서가 중요합니까?

이제 내가 원하는 것을 얻기 위해 유착을 사용할 수 있다는 것을 알고 있습니다. 그러나 SQL이 join 히트를 남기 자마자 SQL에 계속해서 접속하지 않도록 지시하는 방법이 있는지 궁금합니다. 그러나 왼쪽 외부 조인은 쿼리를 작성하는 순서와 동일하게 수행해야합니다.

답변

0

UNION ALL을 사용하여 5 개의 별도 외부 조인 쿼리를 결합하고 첫 번째 행만 취합니다.

+0

UNION ALL은 다섯 개의 쿼리 중 하나가 반환 한 값을 제공합니다. UNION은 중복을 필터링합니다. –

0

일반적으로 단일 행과 열만 필요하지 않으면이 작업을 수행 할 수 없습니다. 아마도 나는 당신이 일 수도 있고 일 수 있다고 생각해야한다. 그러나 이 아니어야한다.

SQL Server는 일반적으로 한 번에 하나의 행에 액세스하지 않습니다. 실제로는 매우 비효율적이므로 한 번에 많은 검색을 수행하거나 전체를 검색하여 I/O를 테이블에 쌓아 놓으려고합니다 테이블 또는 전체 섹션을 한 번에. 이런 맥락에서, 다음 단일 레코드를 중단하고 고려해야하는 경우가 종종 너무 느립니다.

내 권장 사항은 단지 COALESCE를 사용하고 SQL Server가이를 정렬하도록하는 것입니다.

1

LEFT JOIN 쿼리를 EXISTS으로 변환하면 더 효율적입니다.

그리고 아마도 그것이 당신의 의도 일 것입니다; 조건이 충족 될 때 보거나 가입을 중지합니다.

관련 문제