一文了解MySQL的索引分类



在这里插入图片描述


☃️分类

分类含义含义 特点关键字
主键索引针对于表中主键创建的索引默认自动创建,只能有一个PRIMARY
唯一索引避免同一个表中某数据列中的值重复可以有多个UNIQUE
常规索引快速定位特定数据可以有多个
全文索引全文索引查找的是文本中的关键词,而不是比较索引中的值可以有多个FULLTEXT

在这里插入图片描述

在 InnoDB 存储引擎中,根据索引的存储形式,又可以分为以下两种:

在这里插入图片描述


☃️演示图

在这里插入图片描述

在这里插入图片描述

聚集索引选取规则:
● 如果存在主键,主键索引就是聚集索引
● 如果不存在主键,将使用第一个唯一(UNIQUE)索引作为聚集索引
● 如果表没有主键或没有合适的唯一索引,则 InnoDB 会自动生成一个 rowid 作为隐藏的聚集索引


☃️思考

  1. 以下 SQL 语句,哪个执行效率高?为什么?

    select * from user where id = 10;
    select * from user where name = 'Arm';
    -- 备注:id为主键,name字段创建的有索引
    

    答:第一条语句,因为第二条需要回表查询,相当于两个步骤。

  2. InnoDB 主键索引的 B+Tree 高度为多少?
    答:假设一行数据大小为1k,一页中可以存储16行这样的数据。InnoDB 的指针占用6个字节的空间,主键假设为bigint,占用字节数为8.
    可得公式:n * 8 + (n + 1) * 6 = 16 * 1024,其中 8 表示 bigint 占用的字节数,n 表示当前节点存储的key的数量,(n + 1) 表示指针数量(比key多一个)。算出n约为1170。

如果树的高度为2,那么他能存储的数据量大概为:1171 * 16 = 18736;
如果树的高度为3,那么他能存储的数据量大概为:1171 * 1171 * 16 = 21939856。

另外,如果有成千上万的数据,那么就要考虑分表,涉及运维篇知识。


☃️总结

MySQL的索引可以分为以下几类:

B-Tree 索引:B-Tree(Balanced Tree,平衡树)是一种常见的索引结构,适用于等值查询和范围查询。MySQL的普通索引和唯一索引都是基于B-Tree实现的,其中唯一索引要求索引列的值唯一。

哈希索引:哈希索引是通过哈希算法将索引列的值映射到哈希表中的一个位置,适用于等值查询。但是,哈希索引不支持范围查询或者排序操作,并且在某些情况下可能会导致哈希冲突。

全文索引:全文索引用于对文本数据进行全文搜索,允许在文本列上进行关键字搜索。MySQL的全文索引是针对FULLTEXT类型的列,提供了全文搜索的功能。

空间索引:空间索引用于对空间数据进行查询,如地理位置数据。MySQL支持使用R-Tree索引实现空间数据的快速查询。

组合索引:组合索引是将多个列组合在一起创建的索引,可以提高多列条件查询的效率。在MySQL中,使用组合索引可以将多个查询条件一起考虑,提高查询效率。

这些索引类型各自适用于不同的场景和查询需求,选择合适的索引类型可以提高数据库的查询性能和效率。


在这里插入图片描述



  • 24
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值