MySQL索引建立原理及优化方向

MySQL索引建立原理及优化方向
1、索引简介
数据的存放一般分为两种,内存数据和磁盘数据,两种数据存放方式各有优缺点,内存数据便于访问,效率较高,但是由于在内存中,所以数据容易丢失,而磁盘数据可以持久化保存,由于IO原因,磁盘数据访问速度不高,而一般的关系型数据库,大部分都是通过磁盘对数据进行存储的,这就要求数据库能够对访问进行优化,提供一种快速便捷的访问数据方式,于是索引就应运而生了。索引就类似于一本书的目录结构,根据索引可以快速的定位到对应的数据信息。
1)常见数据结构
a.二叉树
优点:二叉树的特性,左子树总是小于根节点,右子树总是大于根节点,所以天然适合进行二分查找,可以快速定位到对应的数据位置。
缺点:如果数据是单边递增或者递减的情况下,二叉树会形成单边树,即只有左子树或者只有右子树的树行结构,显然这种情况下会导致树的高度高过,导致遍历起来速度过慢。
b.红黑树
优点:同样是树型结构,红黑树对二叉树进行了平衡,不会像二叉树那样高度特别高,同样的访问效率也不错
缺点:树高度过高的问题,并没有完全解决,并且由于需要对树进行平衡,所以某些时候索引建立比较耗费资源。
c.hash表
优点:访问速度高,高于树,由于只需要对数据进行hash计算,存储在hash表中,所以其访问速度很高。
缺点:hash冲突问题,范围查找问题,一旦需要进行范围查找,对于hash结构来说,无法对其很好的支持。
d.b-tree
优点:b-tree的特有结构,维持了树型结构的特点,但是对树节点进行了排序,更有利于进行访问,同时叶子节点和非叶子节点均带有data数据信息,可以快速访问数据,并且树的节点高度相同,不存在索引节点冗余情况。
缺点:叶节点指针为空,范围查询时,如果一个叶节点无法满足查询要求,需要继续新一轮查询,data在根节点也存在,导致索引的树节点,放入的索引信息更少。
e.b+tree
优点:具备b-tree的优点,并且叶节点为双向链表结构,对于范围查询,可以更好的支持,根节点无data数据信息,根节点可以存储更多的索引信息。
缺点:索引节点有冗余情况,索引建立字段如果不是自增唯一的情况下,会进行叶节点的再次分裂,导致性能下降。
2)MySQL索引数据结构
常见的两种mysql存储引擎
innodb:innodb的文件结构为frm和idb两个文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值