-
[프리온보딩 백엔드 챌린지 2월] Week 2-1 ) Query, Join, Subquery, SQL functions, 실행계획교육 2023. 2. 15. 22:56
https://www.wanted.co.kr/events/pre_challenge_be_4
EXPLAIN : 실행 계획이 무엇인지 알고 싶을 때 사용하는 명령어
쿼리문을 받으면 어떻게 처리할지 최적화 후 그 계획을 보여줌
실행계획이 완전 정확하진 않아 참고용으로 보면 좋음
id : SELECT에 붙은 번호
select_type : SELECT에 대한 타입
table : 참조하는 테이블
partitions : 파티셔닝이 되어있는 경우 사용되는 필드
type : 접근 방식을 표시하는 필드
possible_keys : 이용 가능성이 있는 인덱스의 목록
key : 옵티마이저가 선택한 인덱스
key_len : 인덱스의 길이
ref : 인덱스에서 값을 찾기 위해 선행 테이블의 어떤 컬럼이 사용되었는지
rows : 몇 행을 가져왔는지
filtered : 필터링 될 테이블 행의 예상 비율
extra : 추가 정보
driving table : JOIN 시 먼저 액세스 되는 테이블
driven table : driving table이 액세스 된 후 액세스 되는 테이블
using join buffer : driving table에서 읽은 레코드를 임시로 보관해둔 메모리 공간(join buffer)이 사용되면 실행계획의 extra 컬럼에 나타남
using temporary : 쿼리를 처리하는 동안 중간 결과를 담아두는 임시 테이블을 사용한 경우 extra 컬럼에 나타남
eq-ref : 인덱스가 UNIQUE이거나 PRIMARY KEY인 경우의 조인
쿼리 작동 순서
불필요한 조건 제거 -> 복잡한 연산 단순화 -> join 발생시 read 순서 결정 -> 인덱스 결정 -> 임시 테이블 필요 여부 결정
FROM -> WHRER -> GROUP BY -> HAVING -> SELECT -> ORDER BY -> LIMIT
DISTINCT : 중복제거 키워드
group by와 유사함
tuple임
JOIN : 여러 테이블을 한번에 가져오는 것
inner join : 두 테이블 모두에 값이 있어야만 표시됨
left (outer) join : left table에서 값을 모두 가져오고 right table에 없으면 NULL
right join : right table에서 값을 모두 가져오고 left table에 없으면 NULL
full join : 두 테이블에서 모든 값을 리턴
cross join : 두 테이블의 곱집합
self join : 본인 테이블을 대상으로 cross join
SQL 내장함수 : 기본적으로 제공되는 함수
- aggregation (내장함수)
COUNT, MAX, MIN, AVG 등
GROUP BY와 많이 사용됨
- CASE WHEN ~ THEN ... ELSE ... END
subquery : query 안에 query문을 추가하는 것
select, from, where(join과 유사)에 사용함
'교육' 카테고리의 다른 글