INNER JOIN에서 ON 절과 WHERE 절 중 어디서 조건을 처리하는 게 효율적일까요? 0 5 2,175

by 찡스쿄 [SQL Query] INNER JOIN ON Condition or WHERE Condition [2021.12.08 13:33:56]


안녕하세요, 선배님들.

문득 궁금점이 생겨서 조언을 얻고자 질문을 올려봅니다!

INNER JOIN은 OUTER JOIN과 달리, 존재하는 값에 대해서만 데이터가 출력되기 때문에 테이블 순서나 조건의 위치에 관계없이 결과를 내려주는 걸로 알고 있습데요.

INNER JOIN의 경우에 ON 절과 WHERE 절 중, 어디서 조건을 처리하는 것이 효율적일까요?

답변 미리 감사드립니다 :)

by 마농 [2021.12.08 14:40:25]

조건의 위치는 효율이 아닌 목적에 따라 구분합니다.
- 조인을 위한 조건인지? ON
- 검색을 위한 조건인지? WHERE
Outer Join 의 경우 조건의 위치에 따라 결과가 달라질 수 있으니 신중해야 하고
Inner Join 의 경우 조건의 위치에 영향을 받지 않습니다.
다만 위에 명시한 대로 목적에 따라 구별하시는게 바람직하지 않을까요?


by 찡스쿄 [2021.12.08 14:52:51]

마농 선생님, 오늘도 답변 너무 너무 감사드립니다 :)

말씀하신대로 조인을 위한 조건인지, 검색을 위한 조건인지를 쉽게 구분하기 위해서는 어떻게 해야 좋을까요?!..

예를 들어, 데이터 삭제 여부(DELETE_YN)와 같은 컬럼을 기준으로 말씀드리자면,

ON 절, WHERE 절 모두 필요할 것 같다는 생각이 강한데,

이런 경우에는 어떻게 구분해야 좋을까요?!..


by 마농 [2021.12.08 15:48:08]

목적이 뭔지를 생각하세요.
- 걸러내기 위한 조건인지? WHERE
- 연결하기 위한 조건인지? ON
보통 대부분의 경우
- 연결은 컬럼끼리 비교하고,
- 검색은 특정값과 비교하죠.
del_yn 조건은
- del_yn 이 N 인 것만 추려내는게 목적이므로 WHERE 절이 맞겠지요.


by 찡스쿄 [2021.12.08 17:02:40]

"연결은 컬럼끼리, 검색은 특정 값과"

와..... 너무나도 심플하고 확실한 답변 감사드립니다, 선생님!

오늘도 도움 주셔서 너무 너무 감사드립니다!

코로나 조심하시고, 좋은 하루 되세요 :)


by 마농 [2021.12.08 17:20:39]

대부분의 경우 그렇다는 것이지. 모든 경우가 그렇다는게 아닙니다.
아우터 조인의 경우 상수값 조건이 ON 절에 들어가는 경우도 가끔은 있을 수 있습니다.

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