面试题答案
一键面试- 设计索引:
CREATE INDEX idx_department_salary ON employees (department, salary);
- 原因:
- 在MySQL中,索引列顺序遵循最左前缀原则。对于查询
SELECT * FROM employees WHERE department = 'HR' AND salary > 50000;
,将department
放在索引的第一列,因为查询条件中首先是对department
进行精确匹配。 - 接着将
salary
放在索引的第二列,虽然salary
是范围查询,但基于最左前缀原则,先通过department
筛选出满足条件的部分数据,再对这些数据基于salary
进行范围筛选,能有效利用索引,提升查询效率。如果将salary
放在索引第一列,由于其是范围查询,MySQL很难有效地利用索引,会导致索引失效,查询效率降低。所以按照department
、salary
的顺序创建复合索引是合适的。
- 在MySQL中,索引列顺序遵循最左前缀原则。对于查询