首页 经验

MySQL的索引,B+树性质。

时间: 2024-10-21 11:26:28

(部分内容来自网络,其真实性存疑,为了避免对您造成误导,请谨慎甄别。)

MySQL 中的索引是数据库系统用来加速查询的一种数据结构。索引通常会显著提高数据检索的速度,但也会增加写入操作的开销,因为索引必须在插入、更新和删除数据时进行维护。


MySQL 索引的基本知识1. 索引的概念

 - 索引是一种数据结构,能够帮助 MySQL 快速查找行而不必扫描整个表。它类似于书籍的目录,可以快速定位到数据的位置。


2. 索引的类型

 - 主键索引:唯一且不能为空值的索引。

 - 唯一索引:值必须唯一,但可以包含 null 值。

 - 普通索引:没有唯一性限制的索引,适用于单列或多列。

 - 全文索引:用于文本搜索,比如查找某些关键字。

 - 复合索引:基于多列创建的索引。


3. 索引的优缺点

 - 优点

 - 提高查询速度,尤其是对于大数据集。

 - 可以加速排序和分组操作。

 - 缺点

 - 增加存储空间的使用。

 - 写入性能降低,因为需要维护索引。

 -维护索引可能导致性能消耗。


B+树索引MySQL 默认使用 B+ 树作为索引存储结构。B+ 树是一种自平衡的树数据结构,具有以下特性:


1. 多路平衡树:每个节点可以有多个子节点(阶数 m),一般为2 到128之间的数值。每个节点的子树数量保持在 [m/2, m]之间。


2. 叶子节点:B+ 树的所有值(实际数据或指向实际数据的指针)都存储在叶子节点中,而内部节点仅存储键值(分割点)。这种特性减少了内存的使用和提高了搜索效率。


3. 顺序访问:所有的叶子节点通过链表连接,可以快速遍历索引数据。这样可以有效支持范围查询。


4. 高度平衡:B+ 树的所有叶子节点都在同一层级上,保证了所有路径的长度相同,使得查找时间复杂度为 O(log n)。


B+树的性质1. 节点特性

 - 每个节点可以包含 m-1 个键(strings)和 m 个子指针(children)。

 - 非叶子节点至少包含 ⌈m/2⌉ 个子指针,叶子节点至少包含 ⌈(m-1)/2⌉ 个键。


2. 键的有序性

 - 所有键在节点内有序排列,左子树的值小于当前节点的值,右子树的值大于或等于当前节点的值。


3. 叶子节点链接

 -通过指针将所有叶子节点链接起来,支持快速的范围查询。


4. 查找和插入

 - 查找过程从根节点开始,逐层向下,直到到达叶子节点。

 - 插入过程在找到插入位置后,如果节点未满则插入,否则分裂节点。


总结MySQL 索引通过采用 B+ 树来提高查询效率和数据的存储及密集度。B+ 树的特点,如高度平衡、叶子节点的链式连接、顺序遍历等,使其成为数据库索引的理想选择。索引的正确使用能够显著提高数据库的性能,特别是在处理大数据集时。


上一个 JAVA hashmap的实现,hashtable,concurrenthashmap实现。 文章列表 下一个 Linux的cpu 100怎么排查,top jstack,日志,gui工具

最新

工具

© 2019-至今 适观科技

沪ICP备17002269号