Mysql-索引

目录

1.MYSQL索引概述

2.MYSQL常用存储引擎

2.1MyISAM

2.I2nnoDB

2.3Memory

3.索引内存模型

3.1哈希表

3.2B+树

4.索引类型

4.1主键索引和普通索引

4.2联合索引

4.3覆盖索引


​​​​​​​

1.MYSQL索引概述

MySQL中的索引,就相当于图书馆的检索目录,它是帮助MySQL系统快速检索数据的一种存储结构。我们可以在索引中按照查询条件,检索索引字段的值,然后快速定位数据记录的位置,这样就不需要遍历整个数据表了。而且,数据表中的字段越多,表中数据记录越多,速度提升越是明显。

2.MYSQL常用存储引擎

2.1MyISAM

Mysql5.5 之前默认的版本,最重要的特点那就是不支持事务,但是这也意味着他的存储速度更快,如果你的读写操作允许有错误数据的话,只是追求速度,可以选择这个存储引擎

2.I2nnoDB

默认的存储引擎,最大的特点支持事务。使用的锁粒度为行级锁,可以支持更高的并发;

2.3Memory

将数据存在内存,一旦服务器出现故障,数据都会丢失。默认使用hash索引。

3.索引内存模型

3.1哈希表

  • 哈希表就是一种以键值对存储数据的结构。在 MySQL 中 key 用于存储索引列,value 就是某行的数据或者是它的磁盘地址
  • 哈希表结构适用于只有等值查询的场景,不适合范围查询。

3.2B+树

B树是一种多路搜索树,查询效率高,特别适合做搜索,是B+树是B树的一种变形树

B+做索引的优势:

  • B+树的磁盘读写代价更低:B+树的内部节点并没有指向关键字具体信息的指针,因此其内部节点相对B树更小,如果把所有同一内部节点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多,一次性读入内存的需要查找的关键字也就越多,相对IO读写次数就降低了。
  • B+树的查询效率更加稳定:由于所有数据都存于叶子节点。所有关键字查询的路径长度相同,每一个数据的查询效率相当。
  • 查询效率更高,B+树只需要去遍历叶子节点就可以实现整棵树的遍历

4.索引类型

4.1主键索引和普通索引

索引类型分为主键索引和二级索引(非主键索引),主键索引树中,叶子结点保存着主键即对应行的全部数据;而二级索引树中,叶子结点保存着索引值和主键值,当使用二级索引进行查询时,需要进行回表操作。

4.2联合索引

  • 多个字段组成一个联合索引
  • 组合索引的最左前缀匹配原则:联合索引的最左前缀匹配指的是where条件一定要有联合索引的第一个字段

4.3覆盖索引

  • 覆盖索引其实是一种特殊的联合索引,即是你查询的字段的所有数据都在索引上,当sql语句的所求查询字段(select列)和查询条件字段(where子句)全都包含在一个索引中(联合索引),可以直接使用索引查询而不需要回表
  • 由于覆盖索引可以减少树的搜索次数,显著提升查询性能,所以使用覆盖索引是一个常用的性能优化手段。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值