💡 테이블에 접근하는 선후 관계
SELECT emp.EMP_ID, emp.FIRST_NAME, emp.LAST_NAME, grade.GRADE_NAME
FROM grade -- 직급
JOIN emp -- 사원
ON grade.EMP_ID = emp.EMP_ID
WHERE emp.LAST_NAME = 'Suri'
-- where → on
👌 드라이빙 테이블에 추출된 결과가 적을 수록 성능상 유리
→ 드리븐 테이블에 인덱스가 존재할 경우 더 성능상 빠름
성능에 중요하게 미치는 것 → 규모가 작은 테이블
인덱스 : 테이블의 레코드 접근 범위를 줄여줄 수 있는 오브젝트
예시) A - emp 테이블 / B - grade 테이블
💡 물리적인 스토리지에 저장되어있는 데이터를 접근 하는 방식
→ Random Access(임의접근) 과 Sequential Access(순차접근)
페이지
라는 단위로 스토리지에 접근인덱스를 활용하여 Landom Access
Q. 학번이 1, 100 인 학생에 대해서 모든 비상연락망 목록을 출력하세요.
WHERE 학생.학번 = 비상연락망.학번
AND 학생.학번 IN (1, 100)
드라이빙 테이블 : 학생 테이블
드리븐 테이블 : 비상연락망 테이블
👉 for 학생 for 비상연락망 학생.학번 == 비상연락망.학번
…
--쿼리 1
SELECT emp.EMP_ID, emp.FIRST_NAME, emp.LAST_NAME, grade.GRADE_NAME
FROM grade, emp
WHERE emp.LAST_NAME = 'Suri'
ON grade.EMP_ID = emp.EMP_ID
→ 실행 계획 수행 시,
Extra
- Using where
로 표기 : Nested Loop Join 사용
--쿼리 2
SELECT emp.EMP_ID, emp.FIRST_NAME, emp.LAST_NAME, grade.GRADE_NAME
FROM grade, emp
→ 실행 계획 수행 시,
Extra
- Using Index, Using Join buffer(Hash Join)
로 표기 : Hash Join 사용