Left Join vs Inner Join

Park Choong Ho·2022년 10월 20일
0

회사에서 작업을 하다가 무지성으로 leftJoin을 한 코드를 innerJoin으로 바꾸는게 어떻냐는 피드백을 받았다. 평소에 join을 할일이 생기면 무조건 leftJoin을 해서 데이터를 가져오려고 했기에 이 둘의 차이점을 알고 있지 못했다. (왜 -1 레벨을 파고들지 않았는가...)

일단 반성은 나중에 하고, leftJoininnerJoin의 차이점을 살펴보자.

Left Join

먼저 아래 예시와 같은 테이블들이 있다고 가정해 보자.

유저 테이블

카드 테이블

여기서 유저 테이블 card_id를 기준으로 join해서 가져온다고 하면,

SELECT *
FROM user_table
LEFT JOIN card_table
ON user_table.card_id = card_table.id

이렇게 명령어를 치면 아래와 같은 테이블이 나올 것이다.

위와 같이 left join은 왼쪽 테이블 모든 행들에 join을 진행한다. 유저테이블에서 첫 번째 row card_idnull이라고 해도!

Inner Join

같은 쿼리인데, 이번에는 innerJoin 을 해보자.

SELECT *
FROM user_table
INNER JOIN card_table
ON user_table.card_id = card_table.id

이 명령어는 아래와 같은 결과를 가져온다.

card_id 값이 null 인 철수는 innerJoin 작업을 진행하지 않는다. 따라서 실제 card_id 값이 있는 유저들만 card를 붙여 가져오고 싶은 경우에는 innerJoin 이 더 좋아 보인다. 만약 card_id가 값이 null 인 row들이 많다면 innerJoin 쿼리가 훨씬 경제적일 수 있다.

이렇게 때와 상황에 맞게 leftJoin , innerJoin을 분별해서 써야한다. 각 쿼리 특징을 이해하고 상황에 맞게 적절한 쿼리를 사용할 수 있어야 한다.

profile
백엔드 개발자 디디라고합니다.

0개의 댓글