🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云星级博主
📌 擅长领域:全栈工程师、爬虫、ACM算法
💒 公众号:知识浅谈
🔥 联系方式vx:zsqtcc
🤞面试官:说一下mysql索引的实现🤞
正菜来了⛳⛳⛳
1. mysql索引的类型
按照类型分为 主键索引,普通索引,唯一索引,全文索引,联合索引。
按照索引的结构内容 分为聚簇索引和非聚簇索引。
2. mysql 索引的底层
索引的结构采用hash ,红黑树,B+树等结构作为索引的结构。
hash:因为只适用于等值查询,所以不能范围查询,其次如果冲突在一个节点,会在这个节点上有很多的记录,影响查询效率,当然如果分布均匀的花,等值查询效率还是很高的。
红黑树:是一种趋近于平衡二叉树结构的索引,根节点和叶子节点均为黑色,企业子节点是指的空节点,然后每次插入的时候节点为红色,如果不满足红黑树的要求需要进行移动变色,从根节点到每一个叶子节点经过的黑色节点个数相同。因为其二叉树结构,索引存储数据较多的话,层数就会比较高,IO变多就会影响查询效率。
B树:是一个多叉树,每个节点存储索引和数据,一个节点就是一个页,因为其多叉树的原因,存储数据就会层数变少,IO次数变少,适合用于索引的结构。
B+树:也是一个多叉树,只不过其非叶子节点知识存储了索引的数据,没有存储具体的数据内容,另外企业子节点存储的是数据内容和 索引结构,叶子节点之间有双向指针,所以在范围查询的时候效率还是很高的。
3. mysql索引使用
对于索引的使用,像是分辨较高的字段,经常用在where语句后边的字段,外键等这些比较适合使用索引。但是索引也不是能滥用的,因为索引也是一种物理结构,在数据的修改的时候对应的索引也要维护,索引索引也不可滥用。
4.MySQL索引失效
常见的索引失效有模糊查询like 中%放在了前边,对应的字段作为了函数的参数或者参与了表达式的运算,或者经历隐式转换。