《MySQL是怎样运行的》读书笔记 B+树索引
B+树索引是MySQL中使用的一种索引类型,它是B-tree的一种变体,用于有序地存储数据。
B+树的特性:
- 所有的非叶子节点只进行索引,不保留数据。
- 所有的叶子节点包含所有的索引数据,并形成一个链表。
- 数据记录都存放在叶子节点上,并且以键值有序链接。
B+树索引的查询流程:
- 从根节点开始,进行二分查找找到对应的关键字。
- 如果关键字存在,则直接返回对应的数据地址。
- 如果关键字不存在,则返回大于此关键字的最小关键字的数据地址。
- 如果查询的是范围查询,则在对应的叶子节点上遍历链表直到结束。
B+树索引的插入流程:
- 从根节点开始,找到叶子节点进行插入。
- 如果叶子节点空间足够,直接插入。
- 如果叶子节点空间不足,需要进行页分裂。
- 分裂后,可能会影响非叶子节点,如果非叶子节点空间也满了,也需要进行类似的分裂操作。
B+树索引的删除流程:
- 从根节点开始,找到叶子节点进行删除。
- 如果删除后叶子节点的数据少于某个阈值,需要进行页合并。
- 合并时,可能会影响非叶子节点,如果非叶子节点只剩下一个节点,也需要进行合并操作。
代码实例:
-- 创建一个简单的表,并为name字段添加B+树索引
CREATE TABLE example_table (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
PRIMARY KEY (id),
INDEX name_index (name) USING BTREE
);
-- 插入数据
INSERT INTO example_table (name) VALUES ('Alice'), ('Bob'), ('Charlie');
-- 使用B+树索引进行查询
SELECT * FROM example_table WHERE name = 'Bob';
-- 删除数据
DELETE FROM example_table WHERE name = 'Alice';
以上代码展示了如何创建一个带有B+树索引的表,以及如何对这个索引进行插入、查询和删除操作。
评论已关闭