CREATE TABLE dept_emp (
emp_no INT NOT NULL,
dept_no CHAR(4) NOT NULL,
from_date DATE NOT NULL,
to_date DATE NOT NULL,
PRIMARY KEY(dept_no, emp_no),
KEY ix_fromdate(from_date)
) ENGINE=InnoDB;
위의 테이블에선 ix_fromdate 인덱스의 마지막에 (dept_no, emp_no) 칼럼이 숨어있다는 것을 인지하고 있다.
실행 계획의 key_len 칼럼은 이 쿼리가 인덱스를 구성하는 칼럼 중에서 어느 부분(어느 칼럼)까지 사용했는지를 바이트 수로 보여준다.
-- 실행 계획의 key_len 칼럼은
-- from_date 칼럼(3바이트)과 dept_emp 칼럼(16바이트)까지 사용하여 19바이트로 표시된다.
SELECT COUNT(*) FROM dept_emp WHERE from_date='1987-07-25' AND dept_no='d001';
-- 실행 계획의 key_len 칼럼은
-- from_date 칼럼(3바이트)를 위한 3바이트만 표시된다.
SELECT COUNT(*) FROM dept_emp WHERE from_date='1987-07-25';
아래 쿼리의 실행 계획에는 Extra 칼럼에 “Using Filesort”가 표시되지 않는다.
이는 MySQL 서버가 별도의 정렬 작업 없이 인덱스 순서대로 레코드를 읽기만 함으로써 ORDER BY dept_no
를 만족했다는 것을 의미한다.
SELECT * FROM dept_emp WHERE from_date='1987-07-25' ORDER BY dept_no;