INNER JOIN

유영·2024년 12월 18일
0

MYSQL

목록 보기
23/26

OUTER JOIN - 합집합

LEFT JOIN은 OUTER JOIN의 일종이다. 따라서 LEFT OUTER JOIN이라고 볼 수 있다.
OUTER JOIN은 합집합을 의미한다.

여기서 LEFT JOIN은 왼쪽의 모든 행을 조회한다. 따라서 topic테이블의 author_id 필드의 값이 NULL이면, author 테이블은 해당 행이 존재하지 않으므로 해당 행의 필드 값들은 NULL로 채워진다.

INNER JOIN - 교집합

말 그대로 교집합을 나타낸다. 따라서 겹치지 않는 행이 존재할 경우, 그 행은 결과에서 제외된다.
결과를 보면 author_id가 NULL인 행이 결과에서 제외된 것을 알 수 있다.

SELECT * FROM topic INNER JOIN author ON topic.author_id = author.aid;
+-----+------------+------------------+-----------+-----+---------+-------+------------+
| tid | title | description | author_id | aid | name | city | profile_id |
+-----+------------+------------------+-----------+-----+---------+-------+------------+
| 1 | HTML | HTML is ... | 1 | 1 | egoing | seoul | 1 |
| 2 | CSS | CSS is ... | 2 | 2 | leezche | jeju | 2 |
| 3 | JavaScript | JavaScript is .. | 1 | 1 | egoing | seoul | 1 |
+-----+------------+------------------+-----------+-----+---------+-------+------------+

성능 차이

두 테이블에서 JOIN을 위한 기준 열이 서로 값을 가지고 있는 경우 조회에서 누락되는 행은 존재하지 않는다.
그렇다면 LEFT JOIN과 INNER JOIN은 같은 조회 결과를 보인다. 이때, INNER JOIN이 상대적으로 성능이 좋다고 한다.


참조
https://velog.io/@profile_exe/SQL-LEFT-JOIN-INNER-JOIN-%EC%B0%A8%EC%9D%B4

0개의 댓글