MySQL B+树中查询数据的全过程 一、B树结构回顾[根节点] ┌─────┴─────┐ 50 150 ┌──┴──┐ ┌──┴──┐ [内部节点] [内部节点] ┌──┼──┐ ┌──┼──┐ 20 50 80 120 150 180 │ │ │ │ │ │ ▼ ▼ ▼ ▼ ▼ ▼ [叶子节点]──[叶子节点]──[叶子节点] 数据页1 数据页2 数据页3 id1,20 id21,50 id51,80二、主键索引聚簇索引查询过程-- 示例查询SELECT*FROMusersWHEREid25;步骤1从根节点开始第1步访问根节点常驻内存 根节点内容[50, 100, 150] 比较25 50 → 走左子节点指针步骤2逐层向下第2步访问内部节点第2层 内部节点内容[20, 35, 45] 比较25 20 且 25 35 → 走中间指针步骤3到达叶子节点第3步访问叶子节点 叶子节点内容21,22,23,24,25,26,... 在页内二分查找找到 id25 的记录 返回完整数据行IO 次数计算-- B树高度为 3 的情况下-- 根节点内存中通常缓存-- 第2层节点1次 IO-- 叶子节点1次 IO-- 总共2-3 次 IO三、二级索引非聚簇索引查询过程-- 有二级索引 idx_age(age)SELECT*FROMusersWHEREage30;步骤1二级索引查找二级索引结构 叶子节点内容 25岁: id5,18,22 30岁: id8,12,25 ← 找到 age30 的所有主键 32岁: id7,19 找到主键值8,12,25步骤2回表查询根据主键 8 → 聚簇索引查找完整数据 根据主键 12 → 聚簇索引查找完整数据 根据主键 25 → 聚簇索引查找完整数据 返回完整结果集四、范围查询过程SELECT*FROMusersWHEREageBETWEEN25AND30;执行过程第1步找到下界age25 沿 B树找到第一个 age25 的叶子节点 第2步顺序遍历 利用叶子节点的双向链表顺序向后遍历 直到遇到 age 30 的记录停止 第3步边遍历边回表 每找到一个 age 值就根据主键回表查数据五、查询过程的优化点1. 缓冲池的作用-- 首次查询从磁盘加载到缓冲池-- 再次查询直接从缓冲池读取0 IO2. 索引条件下推-- 复合索引 idx_age_name(age, name)SELECT*FROMusersWHEREage25ANDnameLIKE张%;-- 过程1.用索引找到 age25的记录2.在索引层面直接过滤 nameLIKE张%3.只回表符合两个条件的记录六、总结B树查询全过程根节点定位 → 逐层向下 → 到达叶子 → 查找目标 → 返回数据 内存 多次IO 找到页 页内二分 回表二级索引关键数据高度 3 的 B树可存 2000 万条数据主键查询2-3 次 IO二级索引查询N 次 ION 二级索引高度 回表次数

相关新闻

最新新闻

Bracket:一站式开源赛程管理系统,拖几秒排好整张对阵表

Bracket:一站式开源赛程管理系统,拖几秒排好整张对阵表

Bracket:一站式开源赛程管理系统,拖几秒排好整张对阵表 【免费下载链接】bracket Selfhosted tournament system 项目地址: https://gitcode.com/GitHub_Trending/br/bracket Bracket 是一款自托管的开源赛程管理系统,把建赛、报名、排…

2026/8/25 17:14:55
腾讯WorkBuddy:AI智能体如何重塑桌面办公自动化

腾讯WorkBuddy:AI智能体如何重塑桌面办公自动化

1. 项目概述:WorkBuddy是什么,以及它想解决什么问题最近在AI应用圈子里,腾讯的WorkBuddy讨论度挺高。简单来说,你可以把它理解为一个“长”在你电脑桌面上的AI智能体工作台。它不是传统的软件,也不是一个简单的聊天机器…

2026/8/25 17:14:55
OpenClaw驱动同花顺Skill:构建安全稳定的自动化选股系统

OpenClaw驱动同花顺Skill:构建安全稳定的自动化选股系统

1. 项目概述:当OpenClaw遇上同花顺官方Skill最近在量化交易和自动化工具圈子里,OpenClaw的热度一直居高不下。作为一个开源的、旨在连接大语言模型与现实世界操作系统的智能体框架,它让“用自然语言指挥电脑干活”这件事变得触手可及。而我作…

2026/8/25 17:14:55
OpenClaw智能体实战:从定时提醒到自动搜索,打造个人自动化助理

OpenClaw智能体实战:从定时提醒到自动搜索,打造个人自动化助理

1. 从“玩具”到“生产力”:OpenClaw的定位转变 最近在折腾本地AI智能体,OpenClaw这个名字出现的频率越来越高。一开始,很多人(包括我)都把它当成一个“会聊天的玩具”——部署好,调通一个大模型&#xff…

2026/8/25 17:14:55
OpenClaw零门槛部署指南:从环境配置到AI助手实战

OpenClaw零门槛部署指南:从环境配置到AI助手实战

1. 项目概述:为什么OpenClaw值得你投入时间?最近在开发者圈子里,OpenClaw 这个名字出现的频率越来越高。如果你关注AI应用开发,特别是想快速构建一个功能丰富的智能对话机器人或AI助手,那么OpenClaw绝对是一个绕不开的…

2026/8/25 17:14:55
VSCode自动保存机制全解析:从原理到实战配置与避坑指南

VSCode自动保存机制全解析:从原理到实战配置与避坑指南

1. 从“忘记保存”到“无感同步”:为什么自动保存是效率的基石作为一名写了十几年代码的老兵,我敢说,几乎每个程序员都经历过那种“眼前一黑”的时刻:敲了半小时的代码,编辑器突然崩溃,或者电脑意外断电&am…

2026/8/25 17:09:55