TechBridge

JOIN 완전 정복 — LATERAL · CROSS JOIN LATERAL · 성능 비교

← 목록으로

📋 실습 안내

✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기 내 코드 실행 결과
🎯 완성 미리보기 목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기 이번 강의 전용
  선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. LATERAL JOIN이 일반 서브쿼리 JOIN과 다른 핵심 특징은?
💡 LATERAL JOIN의 핵심 특징은 FROM 절에서 왼쪽에 위치한 테이블의 컬럼을 서브쿼리 내에서 참조할 수 있다는 것입니다. 이를 통해 각 행에 대해 개별적인 서브쿼리를 실행하는 것이 가능하며, 행별 TOP N 등에 활용됩니다. MySQL은 이 기능을 지원하지 않습니다.
Q2. LEFT JOIN 후 WHERE d.dept_name = '개발'을 추가하면 어떤 문제가 발생하는가?
💡 LEFT JOIN은 오른쪽 테이블에 매칭이 없는 경우 NULL을 반환합니다. 그런데 WHERE 절에서 NULL이 아닌 특정 값을 필터링하면, NULL인 행(부서 없는 직원)이 제거되어 INNER JOIN과 동일한 결과가 됩니다. 해결책은 ON 절에 조건을 추가하는 것입니다.
Q3. FULL OUTER JOIN을 MySQL에서 구현하려면?
💡 MySQL은 FULL OUTER JOIN을 직접 지원하지 않습니다. MySQL에서는 LEFT JOIN UNION ALL RIGHT JOIN으로 에뮬레이션하되, 중복을 제거하려면 추가 처리가 필요합니다. PostgreSQL은 FULL OUTER JOIN을 직접 지원합니다.
Q4. CROSS JOIN LATERAL unnest(tags)의 사용 목적은?
💡 unnest() 함수는 배열을 각각의 행으로 전개합니다. CROSS JOIN LATERAL과 함께 사용하면 배열을 가진 각 행에 대해 unnest를 적용하여 배열 요소별로 행을 생성할 수 있습니다. 예: tags = ['전자','가전']이면 2행으로 전개됩니다.
Q5. EXPLAIN ANALYZE에서 Hash Join이 선택되는 일반적인 상황은?
💡 Hash Join은 작은 테이블을 메모리에 해시 테이블로 구성하고, 큰 테이블을 스캔하며 해시로 매칭하는 방식입니다. 대용량 JOIN에서 효율적이며, 인덱스가 없어도 사용됩니다. Nested Loop는 인덱스가 있을 때, Merge Join은 양쪽이 정렬되어 있을 때 유리합니다.
🎉

퀴즈 통과!

점수: 0점 — 수고하셨습니다!

다음 강의로 →
😅

아쉽네요!

점수: 0점 — 70점 이상이 되어야 통과합니다.