지난시간에 가장 중요한게 type이라고 했음.
다음은 가장 고효율의 3type임.
pk, 또는 유니크 인덱스를 상수값과 동등 비교할때 나타냄. 유니크한 컬럼을 상수값과 비교하므로 매칭되는 행이 최대 1개 밖에 안된다. 때문에 사실상 상수 값이나 다름없다. 그래서 옵티마이저는 이런 조건을 상수로 취급함.
상수긴 한데 조인에서의 상수. 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;

member m 테이블과 조인하기 위해 o 에서 member_id 를 하나씩 읽고, 그걸 m 의 member_id 와 비교한다. 이때 m 에서 member_id 를 기반으로 행을 찾을때 사용되는 전략이 eq_ref임.
유니크가 아닌 인덱스의 동등조건, 또는 복합 인덱스의 왼쪽 접두사만 사용할때 사용함. 쉽게 말해 eq_ref에서, 반드시 한 행만 매칭된다는 조건이 없어진 상황임. 여러개가 매칭될 수 도 있다는 것만 차이가 있음.
EXPLAIN SELECT * FROM product WHERE category_id = 11;
이상 세가지 유형은 성능이 굉장히 좋다. 어떤 쿼리를 explain했는데 접근전략이 const, eq_ref, ref가 나오면 안심해도 됨.
이번에는 주의가 필요한 접근 유형 3가지를 알아보자.