실험의 일부로이 쿼리를 최적화하려고하는데이 예제에서는 MySql에서 제공하는 [The Employee database] [1]을 사용하고 있습니다. 이론 텍스트에서는 WHERE 절에 사용 된 열에서이 작업을 수행하는 것이 좋기 때문에 birth_date 특성에 보조 인덱스를 만드는 방법을 사용하고 있습니다.MySQL -이 경우 보조 인덱스가이 쿼리의 시간을 단축하지 않는 이유는 무엇입니까?
이러한 인덱스를 만들면 적어도 40 %의 시간 감소가 예상되지만 이 쿼리에서는 그렇지 않습니다. 실제로 시간이 개선되지 않는 것 같습니다. 실제로는 평균적으로 조금 더 오래 걸립니다. 아무도 왜 이런 일이 일어 났는지 말할 수 있습니까?
SELECT employees.emp_no,
employees.departments.dept_name,
employees.first_name,
employees.last_name,
employees.birth_date,
year(curdate()) - year(birth_date) AS yearsOld
FROM employees.employees
INNER JOIN employees.dept_emp ON employees.dept_emp.emp_no = employees.emp_no
INNER JOIN employees.departments ON employees.departments.dept_no = employees.dept_emp.dept_no
WHERE year (birth_date) < 1953
ORDER BY emp_no ASC;
결과 :
보조 인덱스 없음 :
시간 평균 촬영 : 평균 촬영
CREATE INDEX myIndex2 ON employees(birth_date);
시간 : 보조 인덱스를 생성 한 후 0.728 초
0.731 초
, 큰 감사 : 대신이 작업을 수행 할 수
인덱스의 사용을 만들려면 – josel82