目录
什么是索引?
索引:是帮助Mysql高效获取数据的一种数据结构
索引的作用是什么?
举个例子说明一个有没有索引的区别
select * from user where age =45
上面这句在执行的时候,一定是按照顺序去扫描的,效率极低,如果表中的数据非常的庞大很耗费时间
如果数据库的age字段加上了索引,那么他现在就成了下面的形状,比如二叉树索引
索引在加快了查询速度的同时,也降低了增删改的速度,同时也增加了磁盘的开销
一般情况下,现在的索引都是B+树索引,他也是mysql的InnoDB存储引擎的默认索引
索引的数据结构
二叉树作为索引,当顺序插入的时候就成了链表,降低了速度
红黑树
解决了变成链表的问题,但是数据很大的时候,它的层级太深,也会使得查询的速度大打折扣
B树
节点上可以有n个key和n+1个指针
B+树
我们可以发现,所有的数据的值都会出现在叶子结点,同时叶子结点形成了一条单向链表,其他节点都是作为了索引
mysql中的B+树
它优化了传统的B+树,增加了一个指向相邻叶子节点的链表指针,就形成了有顺序的链表