서적의 EXPLAIN으로 옵티마이저의 실행 계획을 조회하는 부분에서 예제 쿼리에 대한 결과가 달라 질문드립니다.!
EXPLAIN
SELECT 사원.사원번호, 직급.직급명
FROM 사원,
직급
WHERE 사원.사원번호 = 직급.사원번호
AND 사원.사원번호 BETWEEN 10001 AND 10100;
해당 쿼리의 결과가 책에서는 ref 로 나오나

이렇게 나와있으나 제 실행 결과에서는 eq_ref 로 나옵니다.
+----+-------------+--------+------------+--------+---------------+---------+---------+----------------------------+------+----------+--------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+--------+------------+--------+---------------+---------+---------+----------------------------+------+----------+--------------------------+
| 1 | SIMPLE | 직급 | NULL | range | PRIMARY | PRIMARY | 4 | NULL | 151 | 100.00 | Using where; Using index |
| 1 | SIMPLE | 사원 | NULL | eq_ref | PRIMARY | PRIMARY | 4 | tuning.직급.사원번호 | 1 | 100.00 | Using index |
+----+-------------+--------+------------+--------+---------------+---------+---------+----------------------------+------+----------+--------------------------+
2 rows in set, 1 warning (0.00 sec)
그래서 각 테이블을 조회해보니 두 테이블 모두 사원, 직급 테이블의 사원번호가 기본키더군요 (직급 테이블에서는 사원번호가 복합 기본 키의 한 속성입니다..)
그렇다면 1대 다가 되야할텐데 왜 책과 달리 eq_ref 가 나왔을까요
각 테이블 정보도 함께 보여드립니다.
mysql> desc 사원;
+--------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+---------------+------+-----+---------+-------+
| 사원번호 | int | NO | PRI | NULL | |
| 생년월일 | date | NO | | NULL | |
| 이름 | varchar(14) | NO | | NULL | |
| 성 | varchar(16) | NO | | NULL | |
| 성별 | enum('M','F') | NO | MUL | NULL | |
| 입사일자 | date | NO | MUL | NULL | |
+--------------+---------------+------+-----+---------+-------+
6 rows in set (0.01 sec)
mysql> desc 직급;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| 사원번호 | int | NO | PRI | NULL | |
| 직급명 | varchar(50) | NO | PRI | NULL | |
| 시작일자 | date | NO | PRI | NULL | |
| 종료일자 | date | YES | | NULL | |
+--------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
서적의 EXPLAIN으로 옵티마이저의 실행 계획을 조회하는 부분에서 예제 쿼리에 대한 결과가 달라 질문드립니다.!
해당 쿼리의 결과가 책에서는 ref 로 나오나
이렇게 나와있으나 제 실행 결과에서는 eq_ref 로 나옵니다.
그래서 각 테이블을 조회해보니 두 테이블 모두 사원, 직급 테이블의 사원번호가 기본키더군요 (직급 테이블에서는 사원번호가 복합 기본 키의 한 속성입니다..)
그렇다면 1대 다가 되야할텐데 왜 책과 달리 eq_ref 가 나왔을까요
각 테이블 정보도 함께 보여드립니다.