优秀相关博客地址
1. https://www.cnblogs.com/liqiangchn/p/9060521.html 通俗易懂
一、索引的分类
1:从存储结构上来划分:BTree索引(B-Tree或B+Tree索引),Hash索引,full-index全文索引,R-Tree索引。
2:从应用层次来分:普通索引,唯一索引,复合索引
3:根据中数据的物理顺序与键值的逻辑(索引)顺序关系:聚集索引,非聚集索引。
? 1中所描述的是索引存储时保存的形式,2是索引使用过程中进行的分类,两者是不同层次上的划分。
不过平时讲的索引类型一般是指在应用层次的划分。
二、B、B+树
B+树是B-树的优化,B+树是非叶子节点做索引项,叶子节点做数据信息项,并且叶子节点每M个也就是一个数据页之间是使用指针进行关联,也就是B+树只需要遍历叶子节点就可以实现整个树的遍历,可以更加好地使用范围查询。
B+树增加和删除是符合B树的特性,当子孩子项大于M时,数据就会分裂,中间的节点就会充当父节点。
基于主键进行创建索引,可以减少当增加和删除时候产生的数据分裂的数据更新的操作。
三、聚集索引以及辅组索引
mysql 是使用B+树作为数据结构索引,并且再数据的物理量顺序和索引的顺序使用了聚集索引,也就是叶子节点是存储数据信息,而辅组索引是存储聚集索引的索引项,找到索引项之后又要进行二次索引再一次进行查询
四、顺序主键的策略:
在InnoDB表中使用自增主键是既简单性能又高的策略,这样可以保证数据按顺序写入。最好避免随机的聚集索引,从性能的角度考虑,使用UUID来作为聚集索引是很糟糕的,这样不仅插入行花费的时间长,而且索引占用的空间也更大。
五、什么样的列可以设置索引
六、执行查询时什么情况下不用使用到索引
原文地址:https://www.cnblogs.com/fc520/p/11717365.html