mysql索引分类

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

  1. 聚簇索引,将数据存储与索引放到了一块,找到索引也就找到了数据,不需要根据主键或行号去进行回表查询。
  2. 非聚簇索引,非聚簇索引就是指B+Tree的叶子节点上的data,并不是数据本身,而是数据存放的地址。主索引和辅助索引没啥区别,只是主索引中的key一定得是唯一的。主要用在MyISAM存储引擎中.MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。

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

  1. 主键索引,在MySQL的主键上创建的索引就是主键索引,主键索引会自动创建,一个表只能有一个主键索引,同时主键索引也是唯一索引。
  2. 辅助索引,在聚簇索引之上创建的索引称之为辅助索引,辅助索引访问数据总是需要二次查找,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引,innodb中辅助索引叶子节点存储的不再是行的物理位置,而是键值和主键 ID。

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

  1. HASH索引
    1. 等值查询较快,但是不稳定
    2. 不能使用范围查询
    3. 不能避免数据排序
    4. 不能利用组合索引的部分字段进行查询
    5. 不支持模糊查询
    6. 避免不了回表查询
  2. B+Tree索引
    1. 所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;
    2. 内节点不存储data,只存储key;叶子节点不存储指针。
    3. 不可能在非叶子结点命中;
    4. 非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层;
    5. B+Tree的每个叶子节点增加一个指向相邻叶子节点的指针,就形成了带有顺序访问指针的B+Tree。做这个优化的目的是为了提高区间访问的性能

按索引的常规功能分类

  1. 唯一索引 (UNIQUE Indexs),要求索引列的所有值都只能出现一次,即必须唯一。
  2. 普通索引 (Normal index),仅用来提高查询速度,没有其他特性。
  3. 全文索引 (FULLTEXT Indexes),MySQL可以通过建立全文索引,利用查询关键字和查询列内容之间的相关度进行检索,可以利用全文索引来提高匹配的速度。比如实现全匹配模糊查询。但是实际场景测试mysql的全文索引性能非常不稳定,不建议生产环境使用。需要使用全文检索的地方,还是推荐使用Elasticsearch
  4. 空间索引 (Spatial indexes)空间索引使用R树,R树是用于索引多维数据的专用数据结构。

其他特性索引

  1. 覆盖索引,如果一个索引包含(或覆盖)所有需要查询的字段的值,称为‘覆盖索引’。即只需扫描索引而无须回表。
  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小斌0810

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值