이퀴조인과 래프트 조인 차이점이 궁금합니다. 0 2 777

by 쿼리초보 [2020.06.16 16:43:04]


아래 쿼리 결과가 같은데..

같은 쿼리라고 생각하면 되나요

고견 부탁드립니다.

 

-- 래프트 조인

SELECT A.*
  FROM TB_AAA A
       LEFT JOIN CO_CODE C1 
              ON C1.CODE_CD = 'FUEL_DIV_CD' 
             AND C1.CODE_DETL_CD = A.FUEL_DIV_CD   
   WHERE 1=1
     AND A.SOLD_OUT_YN = 'N'
     AND A.EA_TYPE_CD = '02'                        
     AND A.FUEL_DIV_CD IN ('02','03','04')

;

-- 이퀴조인 


SELECT A.*
  FROM TB_AAA A , CO_CODE C1 
   WHERE 1=1
     AND C1.CODE_CD = 'FUEL_DIV_CD' 
     AND C1.CODE_DETL_CD = A.FUEL_DIV_CD      
     AND A.SOLD_OUT_YN = 'N'
     AND A.EA_TYPE_CD = '02'                        
     AND A.FUEL_DIV_CD IN ('02','03','04')

 

 

 

by 마농 [2020.06.16 17:29:25]

의미상 다른 쿼리입니다.
아우터 조인은 조인에 성공하지 못하더라도 a 는 다 나옵니다.
이너 조인은 조인에 성공하지 못한 자료는 안나옵니다.

만약 결과가 같다면?
이너조인을 사용하면 될 상황이 맞는데도 불구하고.
쓸데없이 아우터 조인을 사용한 것은 아닌지 확인이 필요합니다.

보통은 코드테이블에 있는 코드만 실제로 사용하기 때문에 아우터 조인은 필요 없습니다.
또한 위 쿼리의 경우에는 SELECT 절에 c1 의 항목이 전혀 사용되지 않으므로.
아우터조인도 필요 없지만, 조인 자체가 아예 필요 없습니다.

아우터 조인이 필요한 경우는
 - 코드가 입력되지 않을 수 있다던가.
 - 코드테이블에 없는 값이 입력되는 경우가 있다던가.
http://gurubee.net/lecture/1021


by 쿼리초보 [2020.06.16 18:33:19]

친절한 설명 매번 너무 감사드립니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입