【MySQL高级篇】第6章 索引的数据结构_总结归纳

本文深入探讨了MySQL中InnoDB和MyISAM存储引擎的索引机制,重点介绍了B+树作为索引的数据结构。内容包括索引概述、InnoDB的聚簇和非聚簇索引、MyISAM的索引以及选择B+树的原因,阐述了B+树在降低IO成本、提高查询效率方面的优势。
摘要由CSDN通过智能技术生成

1.索引概述

什么是索引?

  • 索引(Index)是帮助MySQL高效获取数据的数据结构

索引优点

  1. 降低数据库的IO成本
  2. 加速表和表之间的连接
  3. 减少查询中分组和排序的时间
  4. 保证数据唯一性

索引缺点

  1. 占用盘的存储空间
  2. 创建和维护的时间成本高
  3. 增加、删除、更新的速度降低

2. InnoDB中的索引

InnoDB索引方案

针对主键的索引:
在这里插入图片描述

索引类型

聚簇索引

特点:

  1. 页与页之间用双向链表连接;
  2. 页内的记录之间用单向链表;
  3. 最下面一层节点是数据页,其他节点是目录页;
  4. 数据页存储了所有的表数据;
  5. 目录页存储了主键值和子节点的 目录/数据页 页号;
  6. 聚簇索引不需要专门使用 INDEX 语句创建,InnoDB会自动创建。

优点:

  1. 因为数据存储在B+ 树中,数据访问比非聚族索引快
  2. 因为本身是排序的,所以 排序查询和范围查询速度很快

缺点:

  1. 插入/删除 数据可能导致 数据页,甚至多层的目录页 都需要更新,极大降低性能;

说明:

  1. 只有InnoDB存储引擎支持聚簇索引,MyISAM不支持;
  2. 每个表是有一个聚簇索引;
  3. 如果没有定义主键,InnoDB会用非空唯一的字段做聚簇索引,如果没有非空唯一字段,则隐式的定义一个主键做蹴鞠索引;
  4. 尽量选择有序地顺序id做主键,可以减少更新是复杂的问题。

非聚簇索引(二级索引 或 辅助索引)

在这里插入图片描述
二级索引: 用来给非主键字段建立索引。

二级索引特点:

  1. 页与页之间用双向链表连接;
  2. 页内的记录之间用单向链表;
  3. 叶子节点的页存储的不是完整的表数据,而是 索引字段的值 + 主键字段的值
  4. 目录页中不是主键值+页号,而是 索引字段值 + 页号

二级索引的用法:

  1. 先通过二级索引找到索引字段对应的主键字段的值;
  2. 回表, 到聚簇索引通过找到的主键字段再查找完整的整条记录。

聚族索引与非聚族索引小结

  1. 聚簇索引的叶子结点存储了完整的数据记录,而非聚簇索引存储的只是主键值;
  2. 非聚族索引不影响表数据的物理存储位置,所以可以建立多个非聚族索引;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值