MySQL 索引详解(B+数、二级索引)

本文详细介绍了MySQL中的索引,包括索引的优点和缺点,重点讲解了B+树的原理和特性,以及在InnoDB和MyISAM存储引擎中的应用。B+树是一种优化数据检索的数据结构,适用于大数据量的存储,其叶子节点存储完整数据,提高查询效率。此外,文章还探讨了聚簇索引和二级索引的概念,分析了它们的优缺点和使用场景。
摘要由CSDN通过智能技术生成

MySQL 索引详解

1.概述

1.1 简介

MySQL 官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。

索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法。

1.2 优缺点

1.2.1 优点
  1. 类似大学图书馆建书目索引,提高数据检索的效率,降低 数据库的IO成本(1),这也是创建索引最主要的原因
  2. 通过创建唯一索引,可以保证数据库表中每一行 数据的唯一性
  3. 在实现数据的参考完整性方面,可以加速表和表之间的连接 。换句话说,对于有依赖关系的子表和父表联合查询时,可以提高查询速度
  4. 在使用分组和排序子句进行数据查询时,可以显著减少查询中分组和排序的时间 ,降低了 CPU 的消耗

(1):因为各个不同存储介质的读取速度,磁盘的 IO 对于我们来说,可能 0.01s 很快,但是对于 CPU 来说可能处理同样数据的时间为 0.001s 两者的时间差距是几百倍的,因此对于数据库操作来说,要尽量减少磁盘 IO 的次数,这也是创建索引这样数据结构的一个重要原因。

1.2.2 缺点
  1. 创建索引和维护索引要耗费时间,并且随着数据量的增加,所耗费的时间也会增加
  2. 索引需要占磁盘空间 ,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,存储在磁盘上,如果有大量的索引,索引文件就可能比数据文件更快达到最大文件尺寸
  3. 虽然索引大大提高了查询速度,同时却会降低更新表的速度 。当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的维护速度。

因此,选择使用索引时,需要综合考虑索引的优点和缺点

2.B+ 树

2.1 B 树(B-树)

B树(B-tree)是一种树状数据结构,它能够存储数据、对其进行排序并允许以 O(logn) 的时间复杂度运行进行查找、顺序读取、插入和删除的数据结构。B树,概括来说是一个节点可以拥有多于 2 个子节点的二叉查找树。与自平衡二叉查找树不同,B-树为系统最优化大块数据的读和写操作。

2.1.1 定义

  • 根节点至少有两个子节点
  • 每个节点有 M-1 个key,并且以升序排列
  • 位于 M-1 和 M key 的子节点的值位于 M-1 和 M key 对应的Value之间
  • 其它节点至少有 M/2 个子节点

和普通的二叉搜索树最大的不同在于,二叉搜索树的子节点只能有两个,而 B 数不是。

2.2 概述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值