执行计划中的 `key` 字段表示什么含义?

推荐答案

在 MySQL 的执行计划中,key 字段表示查询实际使用的索引。如果查询使用了索引,key 字段会显示该索引的名称;如果没有使用索引,key 字段则为 NULL

本题详细解读

1. key 字段的作用

key 字段是 MySQL 执行计划(EXPLAIN 命令的输出)中的一个重要字段,用于指示查询优化器在执行查询时实际使用的索引。它可以帮助开发人员了解查询是否有效地利用了索引。

2. key 字段的取值

  • 索引名称:如果查询使用了某个索引,key 字段会显示该索引的名称。例如,如果查询使用了名为 idx_name 的索引,key 字段的值就是 idx_name
  • NULL:如果查询没有使用任何索引(例如全表扫描),key 字段的值为 NULL

3. keypossible_keys 的区别

  • possible_keys 表示查询可能使用的索引列表,而 key 表示查询实际使用的索引。
  • 如果 keyNULL,但 possible_keys 不为空,说明查询优化器没有选择使用任何索引,可能是由于索引选择不当或数据分布等原因。

4. 示例

假设有一个表 users,其中包含一个索引 idx_age。执行以下查询:

执行计划可能如下:

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE users ref idx_age idx_age 4 const 1 NULL

在这个例子中,key 字段的值为 idx_age,表示查询使用了 idx_age 索引。

5. 注意事项

  • 如果 keyNULL,可能需要检查查询条件或表结构,确保索引被正确使用。
  • 即使 key 不为 NULL,也需要结合 rowstype 字段,判断索引的使用是否高效。
纠错
反馈