使用select id为什么查询计划的key是索引而不是primary?

只有id主键索引时,使用explain select id的key是PRIMARY
加了c字段的索引后,使用explain select id的key是索引

这是为啥,明明索引没有用


mysql
mysql索引
2023-09-27 10:54:52
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
安静的狗粮

这里用到了覆盖索引,非主键索引的叶子节点保存了主键id,所有直接从非主键索引查id就行了

分享
微博
QQ
微信
回复
2023-09-27 13:00:49
tjm2613165ss
  1. 只有主键索引时:当只有 id 字段作为主键索引时,MySQL 查询优化器通常会选择使用主键索引来执行 SELECT id 这样的查询,因为主键索引是最快的。这就是为什么 key 列显示为 PRIMARY 的原因。主键索引是唯一的,且按顺序存储,因此用于此类查询非常高效。
  2. 加了 ​​c​​ 字段的索引:当你添加了一个额外的索引,例如 c 字段的索引,MySQL 查询优化器可能会选择使用这个新的索引,尤其是如果查询中包含了 c 字段或者可以利用该索引更好地满足查询条件。在这种情况下,MySQL 会选择索引,并且 key 列会显示为这个新索引的名称。
分享
微博
QQ
微信
回复1
2023-09-27 16:34:49
相关问题
InnoDB为什么需要自适应Hash索引
2414浏览 • 1回复 待解决
在MongoDb中什么索引
4124浏览 • 1回复 待解决
redis模糊查询key有懂吗?
2153浏览 • 1回复 待解决
WantAgentInfo中wants为什么数组
1840浏览 • 1回复 待解决
Mysql索引什么结构?
2522浏览 • 1回复 待解决