广告
  • 微信号:shenxiaobin0810
您当前的位置:首页 > MYSQL > mysql索引分类

mysql索引分类

作者:xiaobing 时间:2025-12-15

按索引是否包含记录数据索引可分为:


聚簇索引,将数据存储与索引放到了一块,找到索引也就找到了数据,不需要根据主键或行号去进行回表查询。

非聚簇索引,非聚簇索引就是指B+Tree的叶子节点上的data,并不是数据本身,而是数据存放的地址。主索引和辅助索引没啥区别,只是主索引中的key一定得是唯一的。主要用在MyISAM存储引擎中.MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。

按索引是否建立在主键上分类


主键索引,在MySQL的主键上创建的索引就是主键索引,主键索引会自动创建,一个表只能有一个主键索引,同时主键索引也是唯一索引。

辅助索引,在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引,innodb中辅助索引叶子节点存储的不再是行的物理位置,而是键值和主键 ID。

按索引是底层的数据结构分类


HASH索引

等值查询较快,但是不稳定

不能使用范围查询

不能避免数据排序

不能利用组合索引的部分字段进行查询

不支持模糊查询

避免不了回表查询

B+Tree索引

所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;

内节点不存储data,只存储key;叶子节点不存储指针。

不可能在非叶子结点命中;

非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层;

B+Tree的每个叶子节点增加一个指向相邻叶子节点的指针,就形成了带有顺序访问指针的B+Tree。做这个优化的目的是为了提高区间访问的性能

按索引的常规功能分类


唯一索引 (UNIQUE Indexs),要求索引列的所有值都只能出现一次,即必须唯一。

普通索引 (Normal index),仅用来提高查询速度,没有其他特性。

全文索引 (FULLTEXT Indexes),MySQL可以通过建立全文索引,利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度。比如实现全匹配模糊查询。但是实际场景测试mysql的全文索引性能非常不稳定,不建议生产环境使用。需要使用全文检索的地方,还是推荐使用Elasticsearch

空间索引 (Spatial indexes)空间索引使用R树,R树是用于索引多维数据的专用数据结构。

其他特性索引


覆盖索引,如果一个索引包含(或覆盖)所有需要查询的字段的值,称为‘覆盖索引’。即只需扫描索引而无须回表。

很赞哦! (9)

本站所有文章、数据、图片均来自作者原创,一切版权均归网站作者所有。

如果转载请标明出处。如有侵权请联系。邮箱:bing0810@126.com

标签: MYSQL 
微信

沈雁斌

只要你奔跑,这个世界就会跟着你奔跑,只要你停驻,这个世界就会舍弃你独自奔跑。唯有你确定一个方向,使劲的跑起来,这个世界会为你而让路。

微信

猜你喜欢