刚学mysq, 被各种key 和 各种index搞混淆了.
- 在mysql中, 键key 和 索引index 不应该是两个不同的西吗?
- 如下图所示, 为什么explain语句查询结果里的参数key, 被理解成了"索引"?
- 怎么去正确的认识键key 和 索引index呢?
-
说下自己的个人情况和理解:
- 由于自己之前英语专业, 所以对单词key和index很敏感. 所以将它们当成两个不同的东西, 但对于它们的联系认识不足.
- 索引是一种Btree 二叉树的逻辑结构, 存储在数据库文件中. 而key是列里面的一组数据.
- 看的培训机构的视频, 里面讲师基本概念没讲清楚, 就开始教各种mysql指令了.
1.执行计划里的key列,内容就是用到了哪个索引,没有用到索引就是NULL;
2.键有很多种,主键,外键,唯一键,这些都是通过在列上加索引来实现的,例如主键是唯一索引+not null约束,唯一键就是唯一索引,而对于普通列,如果列上有索引,我也把它叫做普通键。可以发现,凡是“键”,都是有索引的,也就是说,每一个索引,其实对应到一个键,所以应该就是这个原因,MySQL在执行计划里把用到索引用"key"来表示。
3.就比如你的例子里,type是ALL,既然ALL是全表扫描,而MySQL是聚簇表,那为什么不说是用到了主键索引呢?因为你没有用到主键来匹配数据,你没有用到键,也就是没有用到索引,所以key是NULL。