0
私はこのクエリを最適化しようとしています。この例では、MySqlが提供する[The Employee database] [1]を使用しています。私が使用している戦略は、WHERE句で使用されている列についてこれを行うことを理論テキストが推奨しているため、birth_date属性の2次インデックスを作成することです。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秒
ユルゲンdのかなり右である、大きな感謝 – josel82