접근 유형 - 1

지난시간에 가장 중요한게 type이라고 했음.

다음은 가장 고효율의 3type임.

const - 상수

pk, 또는 유니크 인덱스를 상수값과 동등 비교할때 나타냄. 유니크한 컬럼을 상수값과 비교하므로 매칭되는 행이 최대 1개 밖에 안된다. 때문에 사실상 상수 값이나 다름없다. 그래서 옵티마이저는 이런 조건을 상수로 취급함.

eq_ref

상수긴 한데 조인에서의 상수. not null인 유니크 인덱스, 또는 pk를 조인하면서 동등 비교에 이용하면 나타나는 타입이다. 예를들면

EXPLAIN SELECT o.order_id, o.ordered_at, m.member_name, m.email
FROM orders o
JOIN member m ON o.member_id = m.member_id
WHERE o.order_id BETWEEN 1 AND 100;

image.png

member m 테이블과 조인하기 위해 o 에서 member_id 를 하나씩 읽고, 그걸 mmember_id 와 비교한다. 이때 m 에서 member_id 를 기반으로 행을 찾을때 사용되는 전략이 eq_ref임.

ref

유니크가 아닌 인덱스의 동등조건, 또는 복합 인덱스의 왼쪽 접두사만 사용할때 사용함. 쉽게 말해 eq_ref에서, 반드시 한 행만 매칭된다는 조건이 없어진 상황임. 여러개가 매칭될 수 도 있다는 것만 차이가 있음.

EXPLAIN SELECT * FROM product WHERE category_id = 11;

이상 세가지 유형은 성능이 굉장히 좋다. 어떤 쿼리를 explain했는데 접근전략이 const, eq_ref, ref가 나오면 안심해도 됨.

접근 유형 - 2

이번에는 주의가 필요한 접근 유형 3가지를 알아보자.