数据库索引

索引

是数据库管理中的一个排序的数据结构,以协助快速查询和更新数据库表中的数据。
索引的数据结构和具体存储引擎的实现有关,在mysql中使用较多的索引有Hash索引、B+索引等。而我们经常使用的Innodb存储引擎的默认索引实现为B+索引。

索引是如何工作的?

首先明白为什么索引会增加速度。DB在执行一条sql语句的时候,默认方式是根据搜索条件进行全表扫描,遇到匹配条件的就会加入搜索集合,如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的次数,所以能明显增加查询速度。

索引数据结构类型

三种常见也比较简单的数据结构,他们分别是哈希表、有序数组、搜索树(B+)

索引的缺点

  1. 维护索引需要耗费数据库资源
  2. 索引需要占用磁盘空间
  3. 当对表的数据进行增删改的时候,因为要维护索引,速度会受影响。

索引分类

  • 主键索引:设定主键后会自动建立索引,innodb为聚簇索引,主键索引列值不能为空。
  • 普通索引:一个表中可以有多个单列索引。
  • 唯一索引:索引列必须唯一,但允许有一个为null。
  • 复合索引:一个索引中包含多个列。
    • 最左前缀原则。
    • 为了更好利用符合索引,在查询过程中会动态调整顺序。

B+树和B树的不同

  1. 非叶子节点只存储键值信息(主键、指针)。
  2. 所有叶子节点之间都有一个键指针。
  3. 数据记录都存放在叶子节点中。
    Innodb中页的大小为16kb,一般主键int类型为4个字节,Bigint为8个字节,指针类型为4或8个字节。

描述索引

我们在放入数据时,会基于数据进行一个排序,排序后会将数据以链表的形式以一个指针把数据进行连接起来,同时mysql底层进一步优化的是基于B+数的结构进行存储,我们的数据进行一页一页的去存,默认也的大小是16kb,在整个B+树的结构来讲一个三层的B+数结构存储大概是8-10个亿左右,一般项目两层足以。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值