MySQL索引

概念

  • 概念

索引是一种特殊的文件,包含着对数据表里的所有记录的引用指针.可以对表中一系列或多列创建索引.并指定索引类型,各类索引有各自的数据结构实现.

  • 作用

1.类似于书籍目录
2. 索引可用于快速定位,检索数据
3. 索引对提高数据库的性能有很大帮助

使用

1.如果没有索引,那么查找方式就是顺序查找,时间复杂度过高,通过索引避免出现顺序遍历的情况.
2. 数据结构中,哈希表和二叉搜索树都能实现较快查找,那么为什么SQL不使用这两者呢?

  • 哈希表:不能处理数据库的模糊匹配问题,哈希查找需要明确的知道key是什么,从而通过hash函数的到下标,从而查找数据.
  • 二叉搜索树:二叉搜索树虽然能够实现模糊匹配,但是当待查找的元素过多时,树的高度就会指数增长,时间复杂度也会相应变高.
    在这里插入图片描述

3.MySQL中使用 B+树 (N叉搜索树) 来进行索引.
B树/B-树 :
在这里插入图片描述
B树有以下特点

  • 不再是二叉搜索,而是N叉搜索,树的高度会降低,查询快
  • 叶子节点,非叶子节点,都可以存储数据,且可以存储多个数据
  • 通过中序遍历,可以访问树上所有节点
  • 每个节点都可以储存多个数据, 这些多个数据就划分出了一定的区间, 数据通过这些区间来摆放, 在搜索的时候就不用访问那么多的叶子节点, 而是直接在更加细化的区间里面去查找, 这样就减小了查找效率.

B+树
B+树是对B数的一种延伸.
在这里插入图片描述
B+树的特点:

  • B树中非叶子结点也可能存储数据,而B+树的数据一定在叶子结点上,非叶子结点只是用来进行辅助的.
  • B+树中每层兄弟结点之间都是相互连通的,类似于链表,方便遍历,在进行指定区间查找元素时,不需要中序遍历,使用链表的next节点就可以快速访问到.

索引的使用场景

创建索引时,要考虑一下几点:

  • 数据量较大,且经常对这些列进行条件查询
  • 该数据库表的插入操作,以及对这些列的修改操作频率较低.(查询多,修改少)
  • 索引会占用一定的额外磁盘空间
    当满足以上条件时,就考虑在表中的这些字段创建索引,可以提高查询效率,反之,如果查询少而插入修改对,或者磁盘内存不足,就不考虑创建索引.

使用

1.在MySQL中,创建主键约束,唯一约束,外键约束时,就会自动创建其对应列的索引.
2.如果是创建非主键约束,非唯一约束,非外键约束时,也可以自行创建普通索引.
3.主键索引的效率比其他列的索引效率更高.
在这里插入图片描述

  • 查看索引
show index from 表名;
  • 创建索引
create index 索引名 on 表名(字段名);
  • 删除索引
drop index 索引名 on 表名;

面试

在这里插入图片描述

大佬的文章,多瞅瞅
https://blog.csdn.net/bjweimengshu/article/details/105108585

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值