Mysql索引
  vsTbDjolkhbc 2023年11月30日 28 0


索引类型分为:

1.普通索引(NORMAL)
2.唯一索引(UNIQUE):列值唯一,允许空值
3.主键索引(PRIMARY KEY):列值唯一,不允许为空值
3.全文索引(FULLTEXT):加速模糊查询,通常和match()、against()一起使用,查询多列时,建议创建联合全文索引,不然索引会失效,5.6版本之后innoDB引擎也能使用了
4.空间索引(SPATIAL)

索引方法分为:

hash方法索引:

每一次修改新增数据的时候,就会生成对应的一个hash值,检索效率非常高,但不过适用场景也很局限,基本上只能满足“=”,“IN”的检索,一切范围检索都会失效,排序也会让它失效,因为索引hash值与数据本身大小无关

btree方法索引:

像树一样数据只存放在叶子节点上,所以在检索时,是从根节点到枝节点的,检索效率较hash慢,但适用场景比较多,因为btree方法索引天生具备排序功能,所以可以用于范围检索

二叉树:
左边枝节点小于上一节点,右边枝节点,大于根节点

平衡二叉树(AVL树):
相较于二叉树,他保证了任意节点的两个子树高度差都保持平衡,且没有等值的节点,如果删除或新增节点,就可能会导致失衡,失衡后通过旋转满足规则

红黑树:
它是也一种平衡二叉树,它的特点是,叶子节点为黑色且为null,根节点是必须是黑色的,每个路径中黑色节点始终是相同的,新插入的子节点必须为红色,所以有时候也会出现失衡的情况,失衡需要通过变色、旋转去满足规则

平衡多路查找树(b树):
以上两个都有一个特点,非叶子节点,最多只有两个子节点,所以被称之为二叉树,b树它存在多个分支,速度较二叉树快些,相较于平衡二叉树它是子节点<=阶数,子节点(除开根节点和叶子节点)>=阶数/2(向上取证),关键字的数量大于阶数/2(向下取整),缺<=阶数-1个

b+树:
是b树的升级版,在innoDB引擎中使用,它相较于b树更快,更稳定,b树的节点都包含数据指针,b+树不包含了,让非叶子节点只用于索引,每次索引都只能在叶子节点中拿到数据指针

索引什么情况下失效:

1.如果有or关键字,那么每个列都需要有索引,不然就会失效,所以尽量少用or

2.模糊查询,以%开头的时候会失效,所以模糊查询建议使用全文索引

3.联合索引中,第一个列必须存在,否则失效


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月30日 0

暂无评论

推荐阅读
vsTbDjolkhbc