2023-2更文7-mysql索引基础知识

98 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 7 天,点击查看活动详情

mysql索引基础知识

前文

索引是使用mysql进行数据查询过程中一种非常重要的优化手段,通过使用索引能够显著提高数据查询效率,本文将对一些索引的内容进行总结。

索引相关知识

什么是索引

索引可以简单的将其理解为mysql数据库中数据的映射,类似于书本目录的作用。当我们知道所查询的内容在第几页再进行查找时,明显要比直接进行全文检索的速度快。

索引的结构

一般常用的索引结构包括hash结构、b tree结构以及b+ tree结构。hash结构主要是具备1对1查找的速度优势,但当进行范围查找时,hash结构的key是无序的,因此速度会很慢。b tree结构和b+ tree结构很像,都是一个n叉树的结构。区别在于b tree结构会直接将实际的数据内容存储在每一层中,而b+ tree会将所有的数据直接存储到叶子节点中。由于mysql实际的存储内容其实是数据页,因此当b tree存储的数据过大时,会导致b tree中某个节点可能在一页内存储不完,也就导致b tree类型的索引高度升高,降低了实际的索引效率。

索引的分类

在索引使用过程中,我们可以将其分为聚簇索引和非聚簇索引,聚簇索引的叶子节点中所存储的数据是全部的某一条数据的数据,而非聚簇索引中所存储的主要是聚簇索引的key值,也就是实际查询时需要先通过非聚簇索引查找到key值,一般是主键,再通过聚簇索引查找实际的数据内容。

索引也可以根据初始化方式,分成主键索引、唯一索引、一般索引等等,顾名思义,主键索引是以主键为key值的索引,也就是一般为聚簇索引。唯一索引是对于数据产生一定的约束效果,保证唯一性。而一般的索引则不存在唯一性的限制,多数的索引都是一般索引。

另外,索引也可以分为联合索引和单列索引。单列索引就是采用某一个具体的类作为索引字段,而联合索引则是采用多个字段。联合索引在使用的过程中存在最左匹配原则,也就是从左侧字段开始匹配,决定实际生效的索引字段个数。

总结

本文主要是对于索引的结构及类型相关知识进行总结,按照不同的分类方式,索引具备不同的分类结果。另外,我们现在一般是采用b+ tree的结构建立索引,是目前最流行的结构。