MySQL索引

MySQL的索引类型

在MySQL数据库中,为了提高数据库查询效率,通常都要对某些列建立相应的索引

1.什么是索引?

  • 索引是一种对数据库表中的一列或多列进行排序的数据结构

2.为什么要使用索引?

如果不建立索引,那么在进行查询时就只能一个一个的去匹配,通常都要进行全文搜索,查询效率非常慢;通过对一个列或多个列建立索引,由于索引是有序的,那么在查找时就可以调用一些高级的查找算法(如二分查找)来大大提高查询效率,但同时建立和更新索引也会耗费时间和空间.

3.MySQL创建索引的类型

首先索引是由存储引擎来实现,不用的存储引擎支持不同的索引类型:

  • 普通的索引
  • 唯一索引,索引的列的值必须唯一,可以防止往数据库中插入重复的数据
  • 多列索引,由多个列组成一个索引,适用于组合搜索
  • 主键索引,索引的列值唯一且不为空,表中只能有一个主键索引
  • 全文索引,用来查找文本中的关键词,通过关键词映射到所在文档

4.MySQL中的b+Tree索引

B+Tree索引是大多数存储引擎的默认索引类型

B+Tree索引特点:

  • B+Tree是基于B-Tree的一种优化的多路平衡查找树
  • B+Tree树中的所有非叶子节点不存储数据,只有叶子节点才存储相应的数据,这样每个非叶节点可以存储更多的索引值,减少树的查询复杂度
  • B+Tree中的每个叶子节点通过指针相连,可以实现快速的范围查询
  • B+Tree中的节点的值是从左到右依次递增的

5.聚集索引和非聚集索引

非聚集索引: B+Tree中的叶子节点存的是指针,指向数据库表中的数据,索引文件和数据文件是分开来存储的
聚集索引: 叶子节点中存储的是数据记录,索引和数据记录是存放在一起的,聚集索引的查询效率更高

需要注意的是: 在MylSAM存储引擎中索引和数据是分离的,所以它使用的是非聚集索引;而InnoDB存储引擎中数据文件就是索引文件,所以是聚集索引.

6.InnoDB和MylSAM的区别

MySQL默认使用的是InnoDB存储引擎:

主要的区别:

  • InnoDB支持事务机制,而MylSAM不支持
  • InnoDB支持行锁和表锁,MylSAM只支持表锁
  • InnoDB支持主键,MylSAM不支持主键
  • InnoDB不支持全文索引,MylSAM支持全文索引

[参考资料]:

深入理解索引和B+树存储

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值