MySQL有哪些索引

一、按照数据结构分类:

1、B-Tree索引:

B-tree以类似二分的结构,通过范围过滤的算法来提高查询效率,当关键字K在某节点命中后,获取该K的data来返回查询结果,这就是索引的底层原理

2、B+Tree索引:

非叶子节点只存储键值信息, 数据记录都存放在叶子节点中。而B-tree的非叶子节点也存储数据。所以B+tree单个节点的数据量更小,在相同的磁盘I/O次数下,能查询更多的节点。

可以实现范围的查询

3、Hash索引:

hash表,检索效率很高,索引的检索可以一次定位,不像B-Tree索引那样需要从根节点到枝节点,最后才能访问到叶节点。

4、Full-text索引:

主要用来代替like "%***%"效率低下的问题

二、按照物理存储分类:

1、聚簇索引

默认是在主键上建立的索引,当然也可以根据情况改变,但是一个表中只能有一个聚簇索引。聚簇索引的索引顺序就是数据排列顺序。聚簇索引的叶子节点就包含了数据内容,当匹配到索引时也就找到了数据。

2、非聚簇索引(辅助索引;二级索引)

并不是在物理上排列数据,即索引中的逻辑顺序并不等于表中行的物理顺序。非聚簇索引不是唯一的。查找到索引之后,根据记录的数据地址,再去查找数据,索引没有聚簇索引查找的快。

这两种索引都可以加快查找的速度,但同时也会降低写入速度,聚簇索引对写入速度的影响更大。

三、按照字段特性分类:

1、主键索引

建立在主键上的索引被称为主键索引,一张数据表只能有一个主键索引,索引列值不允许有空值,通常在创建表时一起创建。

2、唯一索引

建立在UNIQUE字段上的索引被称为唯一索引,一张表可以有多个唯一索引,索引列值允许为空,列值中出现多个空值不会发生重复冲

3、普通索引

建立在普通字段上的索引被称为普通索引

4、前缀索引

是指对字符串类型字段的前几个字符或对二进制字段的前几个byte建立的索引,而不是在整个字段上建索引。前缀索引可以建立在类型为char、varchar、binary、varbinary的列上,可以大大减少索引占用的存储空间,也能提升索引的查询效率。

四、按照索引字段个数分类:

1、单列索引

建立在单个列上的索引被称为单列索引

2、联合索引(符合索引,组合索引)

建立在多个列上的索引被称为联合索引,又叫复合索引、组合索引。“最左前缀”:当索引列为(a,b,c)时,在查找是是先匹配a列,在匹配b列最后匹配c列。也就是说相当于建立了(a),(a,b),(a,b,c)三个索引。

五、底层数据结构:

二叉树;红黑树;hash;B-Tree;B+Tree

六、为什么索引查找的速度快?

索引可以加快数据库的检索速度,但是会降低新增、修改、删除操作的速度,一些错误的写法会导致索引失效等等。

查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行数,所以能明显增加查询的速度。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值