面试MySQL所需要知道的:索引和SQL优化(上)B+树、聚簇索引和二级索引、覆盖索引、索引下推

本文详细介绍了MySQL索引的基础知识,包括索引的定义、优劣、分类,以及数据结构如B树和B+树。重点讲解了B+树的优势,聚簇索引和二级索引的差异,强调了聚簇索引中数据行与索引的紧密关联。同时,讨论了单一索引和联合索引的最左匹配原则,覆盖索引的概念以及索引下推优化对查询性能的提升。通过对这些概念的了解,读者将更好地理解如何优化MySQL的查询性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

索引的定义和优劣

MySQL对索引的定义是:索引(Index)是帮助MySQL高效获取数据的数据结构

数据库除了存储数据之外,还维护了用于满足特定的查找算法的数据结构,通过这种数据结构来实现的查找算法可以快速查找到数据。这种数据结构就是索引。

关于索引,有一个很普遍的形容,就是书本的目录。

我们在查字典时,可以通过目录,快速找到要查找的单词。如果没有目录,我们就需要从第一页开始,一页一页翻下去,才能找到数据。

优点:而索引的作用类似于此,索引告诉了存储引擎如何快速地找到需要查找地数据。它可以提高数据的的检索效率,降低了排序的成本。减少了数据库的IO成本和CPU资源的消耗

缺点:索引也是需要占用存储空间的,虽然能够提升查询效率,但是会降低更新操作的速度,因为表字段更新时,还需要考虑索引的更新

索引的分类

按照数据结构的分类:

  • Btree索引:MyISAM和InnoDB默认索引
  • Hash索引:Memory存储引擎默认索引
  • 全文索引:搜索引擎索引(MyISAM和InnoDB都已支持)
  • 空间索引:索引空间数据(MyISAM和InnoDB都已支持)

按照功能逻辑的分类:

  • 普通索引:最基础的索引,没有任何的约束
  • 唯一索引:在普通索引的基础上,添加了数据唯一性的约束,即索引的值必须唯一,不能重复
  • 主键索引:主键索引则是在唯一索引上添加了非空的约束,一张表只能有一个主键索引
  • 全文索引:是大量文本搜索时所用到的索引

按照数据的存储方式也可分为两类:

  • 聚簇索引(也叫聚集索引,clustered index)
  • 非聚簇索引(也叫二级索引、辅助索引,secondary index)

按照字段个数划分又可分为两类:

  • 单一索引
  • 联合索引

索引的数据结构

数据库的数据有两种存储介质:硬盘、内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值