MySQL 索引是帮助作用
MySQL 索引是帮助MySQL 高效获取数据的数据结构
了解索引的前提就是需知道数据结构中的一些知识
- 二叉树
- 红黑树
- Hash 表
- B-Tree
- B+ - Tree
- InnoDB索引(聚集)
主要是InnoDB索引(聚集) ,其他的请参考
二叉树: 二叉树点击查看大佬文章
红黑树:红黑树点击查看大佬文章
Hash表:Hash表点击查看大佬文章
B-Tree :B-Tree点击查看大佬文章
B+ - Tree :B+ - Tree点击查看大佬文章
InnoDB索引(聚集)
表数据文件本身就是按B+Tree组织的一个索引结构文件
聚集索引-叶节点包含了完整的数据记录
为什么建议InnoDB表必须建主键,并且推荐使用整型的自增主键?
1.InnoDB存储引擎的数据结构必须需要一个主键才可以组织起来,如果用户使用InnoDB存储引擎建立表的时候,没有指定主键,则Mysql会自动的帮你找到一个合适的唯一索引作为主键,若找不到符合条件唯一索引条件的字段时,会生成类似于ROW_ID的虚拟列充当该InnoDB表的主键
(可以叶子链表快速查找数据)因为我们B+Tree结构每个节点从左到右是依次递增的。意味着我们存放该索引值时要比较大小,整型数据易于比较,如果是字符串“ABCD”一类的,要逐个字母去从头比较到尾。而且整型占内存小(2个字节)。另外,如果该字段已经告诉计算机为“自增”就不必再比较排序大小了
InnoDB索引是改良版本的B+Tree 他的每一样可以放大概 16kb 的数据,默认设置只有 3 行,从小到大排序,只有最后一行数据上才带有数据信息,其他两行只有索引信息,这样可以方便快速定位数据