IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> MySQL索引复习篇 -> 正文阅读

[数据结构与算法]MySQL索引复习篇

索引的分类

  • 主键索引(PRIMARY):唯一的标识,主键不可重复,只能有一个列作为主键,不可以有null

  • 唯一索引(UNION):避免重复的列出现,多个列都可以设置,可以有null
    在这里插入图片描述

  • 常规索引(KEY):仅加速查询

  • 组合索引:多列值组成一个索引,专门用于组合搜索

  • 覆盖索引:要查询的列已经被索引列覆盖
    在这里插入图片描述

  • 全文索引(FULLTEXT)

1.聚集索引(主键索引)

  • InnoDB引擎是B+树索引组织而成的。B+树的叶子节点存储的都是数据段的数据
  • InnoDB对数据的存储必须依赖于主键,主键对应的索引叫聚集索引。假设你没有建主键,InnoDB会从表中寻找第一个非空的唯一索引作为聚集索引,但如果这也找不到,会生成一个不可见的ROW_ID的列,该列是一个6字节的自增数字,用来生成聚集索引。
  • 对于ROW_ID列的自增实现其实是来自于一个全局自增序列,这意味着所有使用到ROW_ID作为聚集索引的表都共享该序列,如果在高并发的情况就有保证不了唯一性的可能。

2.索引的数据结构

  • B tree :B树是二叉树的升级版,又叫平衡多路查找树。每个节点都存放数据
  • B+ tree :B+ 树是应文件系统所需而产生的一种 B树的变形树(文件的目录一级一级索引,只有最底层的叶子节点(文件)保存数据非叶子节点只保存索引,不保存实际的数据)。

3.B树和B+树的区别

B+树非叶子节点只保存索引,所有数据保存在叶子节点,叶子节点按照从小到大通过指针串起来的,所以B+树在范围查找会更快

4.B+树的优势

对于 B 树和 B+ 树来说,两种数据结构都是为了减少磁盘 I/O 读写过于频繁而生,可以让每层放尽量多的节点,以此来降低整棵树的高度。
b+树相比于b树的优点:

  • B+树的磁盘读写代价更低
    数据的聚集程度直接也影响了查询磁盘的次数
  • B+ 树查询效率更加稳定
    树高确定的前提下所有的数据都在叶子节点,那么无论怎么查询所有关键字查询的路径长度是固定的。
  • B+ 树对范围查询的支持更好(最大的优势)
    B+ 树所有数据都在叶子节点,非叶子节点都是索引,那么做范围查询的时候只需要扫描一遍叶子节点即可;而 B 树因为非叶子节点也保存数据,范围查询的时候要找到具体数据还需要进行一次中序遍历。

5.MyISAM 和 InnoDB 存储引擎的索引区别

  • MyISAM 也是使用 B+ 树作为索引存储结构,他的叶子节点 data 域存放的是数据的物理地址,即索引结构和真正的数据结构其实是分开存储的。也就是data放的是指针。
  • MyISAM 索引和数据是分离的,但是在 InnoDB 中却大不相同,InnoDB中采用主键索引的方式所有的数据都保存在主键索索引中叶子节点。即主键直接挂记录,基于主键来存储数据。所以这也是为什么 InnoDB 要求每个表都必须要有主键的原因。

6.索引的缺点

  • 磁盘空间占用
  • 对更新操作带来的时间损耗
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-03 01:23:43  更:2022-02-03 01:24:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 17:35:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码