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. 查找和插入:
- 查找过程从根节点开始,逐层向下,直到到达叶子节点。
- 插入过程在找到插入位置后,如果节点未满则插入,否则分裂节点。