面试题答案
一键面试- key 字段含义
key
字段表示 MySQL 在查询执行计划中实际使用的索引。如果为NULL
,则表示没有使用索引。
- 对查询优化的作用
- 提高查询效率:当
key
字段显示使用了合适的索引时,MySQL 可以通过索引快速定位到符合条件的数据行,避免全表扫描,从而大大提高查询速度。例如在一个包含大量用户信息的users
表中,若经常根据user_id
查询用户详细信息,在user_id
字段上建立索引,查询时key
字段显示使用该索引,查询速度会显著提升。 - 帮助优化索引策略:通过查看
key
字段,可以判断当前索引是否被有效利用。若发现查询没有使用预期的索引(key
为NULL
),则需要考虑调整索引结构,比如添加复合索引、修改索引字段顺序等,以优化查询性能。
- 提高查询效率:当
- 举例说明
- 假设有一个
employees
表,结构如下:
CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(255), department VARCHAR(255), salary DECIMAL(10, 2) );
- 执行查询:
EXPLAIN SELECT * FROM employees WHERE id = 10;
-
在执行计划中,如果
key
字段显示为PRIMARY
,说明使用了id
字段上的主键索引,这将快速定位到id
为10
的记录。如果表中数据量很大,没有使用索引(key
为NULL
),则需要逐行扫描表中的每一条记录来查找id
为10
的记录,查询效率会很低。 -
再比如,若经常查询某个部门中工资高于一定数额的员工:
EXPLAIN SELECT * FROM employees WHERE department = 'HR' AND salary > 5000;
- 如果此时
key
为NULL
,可以考虑在department
和salary
字段上建立复合索引CREATE INDEX idx_department_salary ON employees (department, salary);
,再次执行EXPLAIN
,若key
字段显示idx_department_salary
,则说明索引生效,查询性能会得到优化。
- 假设有一个