성장 (成長)

OUTER APPLY 에 대하여 본문

일하다가 막혔던것들/Msqql

OUTER APPLY 에 대하여

about_blank_i 2022. 8. 2. 11:14

[구문 형식]

 

SELECT ..
FROM [외부 테이블]
CROSS | OUTER APPLY (SELECT .. FROM [내부 테이블] WHERE [조인 조건자])

 

[정의]

 

[CROSS APPLY]

내부 테이블(테이블 반환 함수)의 집합으로부터 조인 키로 결합한 외부 테이블의 행만을 반환합니다.

 

[OUTER APPLY]

내부 테이블(테이블 반환 함수)의 집합으로부터 조인 키에 결합한 외부 테이블의 행 + 그렇지 않은 행 전부를 반환합니다. 그렇지 않은 행에 열에는 NULL을 표시합니다.

 

[특징]

 

1. CROSS APPLYINNER JOIN, OUTER APPLYLEFT JOIN과 동일한 결과 집합을 반환할 수 있습니다.

2. JOIN과 동일한 결과 집합을 반환하더라도 상황에 따라 옵티마이저의 실행계획이 다를 수 있습니다.

 

[장점]

 

1. 오른쪽 서브 쿼리(내부 테이블)에 외부 테이블의 컬럼을 인자로 제공할 수 있습니다.

2. 테이블 반환 함수도 조인하여 사용할 수 있습니다.(JOIN연산자로는 불가능)

3. 특정 상황에는 JOIN보다 더 좋은 성능을 발휘할 수 있습니다.

(아래의 [OUTER APPLY 예제 2]처럼 APPLY와 TOP을 함께 사용하면 더욱 좋은 성능을 기대할 수 있습니다.)

 

출처: https://goldswan.tistory.com/16 [금백조의 개발 블로그:티스토리]

 

[MSSQL]CROSS APPLY, OUTER APPLY 활용 및 예제(APPLY 연산자)

서론 시스템 유지보수를 진행하면서 OUTER APPLY를 사용하는 쿼리를 접해본 적이 있습니다. 당시에는 LEFT JOIN과 동일한 결과를 반환할 수 있다는 정도만 알았었는데 이번 기회에 APPLY 연산자에 대해

goldswan.tistory.com

 

'일하다가 막혔던것들 > Msqql' 카테고리의 다른 글

자주쓰는쿼리  (0) 2022.07.25
[MSSQL] join 다이어그램  (0) 2022.07.18
MSSQL DB 복사/생성 스크립트 만드는법  (0) 2022.06.03