印趣云课堂-网校系统服务商

手机APP

微信公众号

php - mysql执行计划语句的分析和理解? 云课堂问答

刚学mysq, 被各种key 和 各种index搞混淆了.

  1. 在mysql中, 键key 和 索引index 不应该是两个不同的西吗?
  2. 如下图所示, 为什么explain语句查询结果里的参数key, 被理解成了"索引"?
  3. 怎么去正确的认识键key 和 索引index呢?
  4. 说下自己的个人情况和理解:

    1. 由于自己之前英语专业, 所以对单词key和index很敏感. 所以将它们当成两个不同的东西, 但对于它们的联系认识不足.
    2. 索引是一种Btree 二叉树的逻辑结构, 存储在数据库文件中. 而key是列里面的一组数据.
    3. 看的培训机构的视频, 里面讲师基本概念没讲清楚, 就开始教各种mysql指令了.

图片描述

提问者

添加回答

3回答
912683
6年前912683

在MySQL 中, KEY 才是正统的 索引 概念。

  • 添加普通索引
ALTER TABLE `user` ADD KEY idx_name (column_name);
  • 添加唯一索引
ALTER TABLE `user` ADD UNIQUE KEY unq_name (column_name);
赞同00个回复
123456xsl
6年前123456xsl

百度搜索下相关基础概念吧,创建索引不得指定为哪一个key设置索引吗?这个key就是被设置索引的那个key,当然并不是你设置了索引就一定会被命中,索引命中的条件具体不说了,explain这里的key是你实际命中的索引key

补充回答你修改的问题:mysql使用的是B+tree,付给你一份比较好的介绍mysql索引实现原理的文章http://blog.codinglabs.org/ar...

赞同00个回复
2米六啊
6年前2米六啊

1.执行计划里的key列,内容就是用到了哪个索引,没有用到索引就是NULL;
2.键有很多种,主键,外键,唯一键,这些都是通过在列上加索引来实现的,例如主键是唯一索引+not null约束,唯一键就是唯一索引,而对于普通列,如果列上有索引,我也把它叫做普通键。可以发现,凡是“键”,都是有索引的,也就是说,每一个索引,其实对应到一个键,所以应该就是这个原因,MySQL在执行计划里把用到索引用"key"来表示。
3.就比如你的例子里,type是ALL,既然ALL是全表扫描,而MySQL是聚簇表,那为什么不说是用到了主键索引呢?因为你没有用到主键来匹配数据,你没有用到键,也就是没有用到索引,所以key是NULL。

赞同00个回复

相关问题

相关分类

请选择你的考试意向可选择1个考试 随时调整

test

外语考试

考研学历

教师公考

医药卫生

职业资格

财会经济

建筑工程

趣味测试

考研

IT

医疗教学

外语教学

数理逻辑

文学

点击查看更多考试 >

选好了