MYSQL索引总结

MYSQL索引总结篇

为什么要使用索引

1.当你在茫茫人海中寻找一个人,比如说他的名字是xxx,你不得不挨个问过去,很麻烦,所以要给它一个索引

索引的结构

  1. B+树(最常用,前面的博客有细讲,支持范围查询
  2. 哈希表 精准度很高,因为一个哈希值仅仅对应一个或几个数据

索引分类与使用

聚集索引与二级索引

聚集索引可以理解为主键,找到id之后下面的row就挂着它对应的数据,直接根据id查,只需要查一次,性能比较快

二级索引就是,非主键查询,比如说根据username,查询user的所有信息,流程是什么呢,首先,去二级索引那一棵树上,通过用户名,拿到id,但是还没完,再拿着id,去聚集索引查询,相当于查两次,所以说性能比较慢,那么有没有更好的方式呢,那当然

单列索引和联合索引

  1. 单列索引直接跟着字面意思理解,就是某个索引直接对应某个字段

  2. 联合索引就是,多个字段联合起来,共用一个索引

    有什么用呢,比如说,你想根据name来查询身份证号,那么按照以往情况,要用二级索引,查两次,但是,现在有联合索引,只要通过二级索引查一次就ok了,联合索引的本质也是一个二级索引,但是,有个误区就是,想说通过id来查询联合索引对应的字段,其实多此一举了,直接主键查询,聚集索引

但是捏,聚集索引也有它需要注意的点

就是最左前缀法则,就是最左边的那个字段一定要在,不然会引发索引失效

那还有什么情况会引发索引失效呢,首先就是别傻傻的在字段上上进行函数运算操作,接着就是字符串没加引号也会导致索引失效

前缀索引

比如说,你想根据文章内容,查询跟文章有关的某个信息,文章内容是不是贼大?要是直接以它为二级索引,数据库是不是会炸掉?所以说是不是可以裁减相应一部分,这就引出了前缀索引

就直接裁剪该字段的前几个值,作为索引,那么就涉及到一个调参问题,要裁剪几个呢? 有一个公式,区分度吧可以这么理解,就是 区分度Q=不同索引个数/总数,所以说Q值越大,区分度越高,但是虽然说区分度高的话比较精确,但是维护成本会相对来说高一些,所以就要权衡利弊,协调好

posted @ 2024-03-28 16:46  糖子哥  阅读(7)  评论(0编辑  收藏  举报