2011-11-23 1 views

답변

2

그렇습니다. 표준 외부 조인과 Informix 스타일 외부 조인의 의미에 차이가 있습니다. 필연적으로 쿼리 계획에 차이가 있음을 의미합니다.

일반적으로 새 코드 또는 수정 된 코드에 표준 표기법을 사용합니다. - (변경되지 않은) 레거시 코드에 대해 Informix 스타일의 외부 조인 표기법을 남겨두고 새 조인 표기법을 사용하도록조차 업데이트하는 것이 좋습니다.

차이점은 무엇입니까? 공정한 질문 - 설명하기가 어렵고, 여전히 좋은 (그럴듯한 예를 생각해내는) 것이 더 힘들다. 기본적으로 Informix 스타일 표기법은 외부 조인 된 테이블에서 해당 행을 거부하는 값을 기반으로하는 조건이있는 경우에도 '지배적 인'테이블 (비 외부 테이블)의 행을 유지합니다.

SELECT i.*, o.* 
    FROM DominantTable AS i, OUTER OuterJoinedTable AS o 
WHERE i.pk_column = o.fk_column; 

SELECT i.*, o.* 
    FROM DominantTable AS i 
    LEFT OUTER JOIN OuterJoinedTable AS o 
    ON i.pk_column = o.fk_column; 

이 두 쿼리는 반드시 동일한 결과를 생성하지 않는 :

이 두 쿼리

는 동일한 결과를

DominantTable        OuterJoinedTable 
pk_column other_column     fk_column alt_column 
1   twenty       1   3 
: 차이는이 같은 상황에서 발생

SELECT i.*, o.* 
    FROM DominantTable AS i, OUTER OuterJoinedTable AS o 
WHERE i.pk_column = o.fk_column 
    AND (o.alt_column IS NULL OR o.alt_column = 1); 

SELECT i.*, o.* 
    FROM DominantTable AS i 
    LEFT OUTER JOIN OuterJoinedTable AS o 
    ON i.pk_column = o.fk_column 
WHERE (o.alt_column IS NULL OR o.alt_column = 1); 

표준 LEFT OUTER JOIN 표기법은 빈 세트를 결과로 생성합니다. 인포믹스 스타일의 결과를 생성한다 조인 발 DominantTable

pk_column other_column fk_column alt_column 
1   twenty   null  null 

데이터 인해 지배적 테이블 필터 조건 거절되지 있으므로 인포믹스는 보존된다. 표준 조인은 외부 조인을 수행 한 다음 결과를 필터링합니다.

+0

멋진 답변이지만 실적은 – kubek2k

+0

인데 우리가 합류하기 위해서만 조건을 사용한다고 가정하면 쿼리가 동일 할 것입니까? – kubek2k

+0

내 대답 읽기 - 뭐라고 말합니까? –

0

둘 모두에 대한 실행 계획을 테스트하고 확인하거나 게시하면 해당 내용을 소화하는 데 도움이됩니다.

다른 현재 데이터베이스 엔진에서는 동일한 최적화 실행 계획이 실행됩니다.

+0

기타 DBMS는 Informix 스타일의 외부 조인 인 AFAIK를 구현하지 않습니다. 최소한 나는 어떤 사람들이하는지 알고 싶어 할 것입니다. –