栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MYSQL索引相关内容

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MYSQL索引相关内容

1、为什么使用索引?简单谈谈我对索引的理解?

       使用索引一般是为了解决实际开发中的慢查询问题,出现慢查询大部分是因为表里的数据量比较大,MySQL使用索引其实和我们采用redis缓存中间件有相似的设计之处,主要利用了在内存处理数据比在磁盘进行IO操作高效这一特点。

2、mysql的innoDB使用了B+树的索引模型,每个索引在InnoDB里面对应一棵B+树,索引类型一般主要分为主键索引(聚簇索引)和非主键索引(二级索引),一般在开发中推荐使用主键索引,因为使用非主键索引查询时存在回表的动作,相对于主键索引效率查询效率要低。

3、mysql支持最左前缀原则,举例:alter table emp add index ageNamIdx (name,age),创建这一复合索引进行分析,假如我们查询名字中包含“张”的员工,select * from emp where name like "张%",通过查看执行计划explain select * from emp where name like "张%" 我们发现使用了索引,这样我们就不需要单独为name字段新增索引,这样大大提高了索引的复用能力,减少了索引的维护。

4、mysql的索引下推,mysql在5.6之后加入了新特性:索引下推,mysql利用这一特性可以减少回表次数,加快查询效率。举例:查询名字中包含张,年龄10岁,并且姓别是男性的员工,查询语句:select * from emp where name like "张%" and age =10 and  ismale=1;5.6之后,在索引遍历的过程中,对索引包含的字段先做判断,直接过滤掉不满足的条件的记录,减少回表次数,譬如:5.6之前,没有索引下推,根据非主键索引查出来10条数据那么需要回表10次,5.6之后,引入索引下推之后,根据非主键索引name、age查询数据已经过滤一部分数据剩下7条数据,那么这7条数据只需要回表7次,大大提升了查询效率。

5、mysql的索引是需要去维护的,B+树为了维护索引的有序性,在插入新值的时候要做必要的维护,假如索引页存的的数据记录是500、600、800,你插入的数据900只需要在后面追加即可,但是如果你插入的数据是700,mysql需要逻辑上移动后面的数据,空出位置,更糟的情况,如果页数据满了,根据B+树的算法会去重新申请一个数据页,然后挪动部分数据过去,这个过程称为页分裂,此时性能会受到影响,同理数据删除的过程,会触发页合并。

6、完整索引和前缀索引的选择:

       直接创建完整索引,这样可能比较占用空间,查询效率客观;创建前缀索引,节省空间,但会增加查询扫描次数,并且不能使用覆盖索引,效率不如完整索引。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/322714.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号