EXPLAIN SELECT * FROM dept_emp WHERE from_date>='1985-01-01';
id | select_type | table | type | key | key_len | rows |
---|---|---|---|---|---|---|
1 | SIMPLE | dept_emp | ALL | NULL | NULL | 331143 |
EXPLAIN SELECT * FROM dept_emp WHERE from_date>='2002-07-01';
id | select_type | table | type | key | key_len | rows |
---|---|---|---|---|---|---|
1 | SIMPLE | dept_emp | range | ix_fromdate | NULL | 292 |
WHERE
조건으로 한 번 더 필터링해서 남은 비율이다.
아래 예제 쿼리에서 WHERE
조건의 첫 번째 조건과 마지막 조건만 각 테이블에서 인덱스를 사용할 수 있는 조건들이다.
EXPLAIN SELECT * FROM employees e, salaries s
WHERE e.first_name='Matt'
AND e.hire_date BETWEEN '1990-01-01' AND '1991-01-01'
AND s.emp_no=e.emp_no
AND s.from_date BETWEEN '1990-01-01' AND '1991-01-01'
AND s.salary BETWEEN 50000 AND 60000
id | select_type | table | type | key | rows | filtered |
---|---|---|---|---|---|---|
1 | SIMPLE | e | ref | ix_firstname | 233 | 16.03 |
1 | SIMPLE | s | ref | PRIMARY | 10 | 0.48 |
employees
테이블이 드라이빙 테이블로 선정된다.employees
테이블에서 인덱스 조건에만 일치하는 레코드는 약 233건233건 중 16.03%만 나머지 WHERE
조건에 일치한다는 것을 알 수 있다.