MySQL的索引

索引(index): 相当于一本书(index)。

根据目录中每个章节对应的页码,就能快速的找到对应的章节,MySQL的索引也是一样的道理。

索引的主要意义就是进行查找,要提高查找的效率,就要付出一些代价。

书的目录也是费纸的,数据库的索引也是需要消耗一定的额外存储空间的,数据量越大,索引消耗的额外空间就越多;

书的目录如果确定了,后续每次对书的内容进行调整,都可能会影响到目录的准确性,就需要重新调整目录,数据库的索引也是一样,当进行增删改的时候,往往也需要同步的调整索引的结构。

索引的好处:提供了查找速度

索引的坏处:占用了更多的空间,拖慢了增删改的速度

和索引相关的sql

查看索引:show index from 表名;

 直接看student表,发现里面其实已经自带了一个索引,这个自带的索引就是primary 这个主键约束带来的,查询的时候,如果查询条件指定了根据主键查询,这个时候查询速度就会非常快,unique 也是要带索引

创建索引:create index 索引名字 on 表名(列名);

删除索引:drop index 索引名字 on 表名;

索引背后的数据结构——B+树

数据结构就是用来能够加快查找的速度

B+树也是一个N 叉搜索树,每个节点都包含多个key 值,每个节点如果有N 个key,就分成了N 个区间。父节点的值,都会在子节点中体现,非叶子节点中的每个值,最终都会在叶子节点中体现出来。父节点中的值,会作为子节点中的最大值(最小值),最下面的叶子节点,就使用链表进行按顺序连接。

B+树就是为了数据库索引量身打造的

  1.  使用B+ 树进行查找的时候,整体的IO 次数也是比较少
  2. 所有的查询最终都会落到叶子节点上,每次查询的IO 次数都是差不多的,查询速度稳定
  3. 叶子节点用链表连接后,非常适合进行范围查找
  4. 所有的数据存储(载荷)都是放到叶子节点上的,非叶子节点中只保存 key 值即可,因此非叶子节点整体占用的空间小,甚至可以缓存到内存中(一旦能够全放内存里,这个时候,磁盘IO几乎全没了) 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值