加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL索引原理是啥

发布时间:2022-03-02 21:39:30 所属栏目:编程 来源:互联网
导读:这篇文章主要介绍MySQL索引原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 摘要: 就一起来聊一聊MySQL索引。 什么是索引? 百度百科是这样描述的: 索引是为来加速对表中数据行中的检索而创建的一种分散的数据结果,时针
     这篇文章主要介绍MySQL索引原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
 
      摘要: 就一起来聊一聊MySQL索引。 什么是索引? 百度百科是这样描述的: 索引是为来加速对表中数据行中的检索而创建的一种分散的数据结果,时针对表而建立的,它是由数据页面以外的索引页面组成,每个索引页中的行都含有逻辑指针,以便加速检索物理数据 其实,索引的概念大家都很清楚,也知道索引能够提升查询效率,但大部分童鞋在怎么建索引,建在哪些字段上有以下常见误解: 新建表时不需要建索引,后续才添加索引 where条件后的字段均建索引 简单SQL不需要索引,联合查询才需要索引 联合索引的顺序是where条件后字段的先后顺序 对于区分度小的字段上也新建索引,如状态,性别等字段等。
 
     就一起来聊一聊MySQL索引。
 
       什么是索引?
 
百度百科是这样描述的:
 
索引是为来加速对表中数据行中的检索而创建的一种分散的数据结果,时针对表而建立的,它是由数据页面以外的索引页面组成,每个索引页中的行都含有逻辑指针,以便加速检索物理数据
 
其实,索引的概念大家都很清楚,也知道索引能够提升查询效率,但大部分童鞋在怎么建索引,建在哪些字段上有以下常见误解:
 
对于区分度小的字段上也新建索引,如状态,性别等字段等。
 
索引区分度
 
在说上述问题之前,我们先来看看另一个概念,就是区分度。
 
区分度: 指字段在数据库中的不重复比
 
区分度在新建索引时有着非常重要的参考价值,在MySQL中,区分度的计算规则如下:
 
字段去重后的总数与全表总记录数的商。
 
例如:
 
select count(distinct(name))/count(*) from t_base_user;
 
结果如下:
 
count(distinct(name))/count(*)
1.0000
其中区分度最大值为1.000,最小为0.0000,区分度的值越大,也就是数据不重复率越大,新建索引效果也越好,在主键以及唯一键上面的区分度是最高的,为1.0000。在状态,性别等字段上面的区分度值是最小的。 (这个就要看数据量了,如果只有几条数据,这时区分度还挺高的,如果数据量多,区分度基本为0.0000。也就是在这些字段上添加索引后,效果也不佳的原因。)
 
值得注意的是:    如果表中没有任何记录时,计算区分度的结果是为空值,其他情况下,区分度值均分布在0.0000-1.0000之间。
 
如何建索引
 
(一)  : 区分度
个人强烈建议, 建索引时,一定要先计算该字段的区分度,原因如下:
 
 单列索引
可以查看该字段的区分度,根据区分度的大小,也能大概知道在该字段上的新建索引是否有效,以及效果如何。区分度越大,索引效果越明显。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读