供应链管理软件选型指南:WMS/OMS/TMS/BMS怎么选?(含主流厂商对比)
2026/10/31 17:30:45
在数据库的世界里,索引就如同书籍的目录。
没有目录,查找特定内容可能需要翻遍整本书;而有了目录,我们就能快速定位。
在 MySQL 中,这个“目录”的核心实现就是 —— B+树(B+ Tree)。
它是 MySQL 高性能查询的根基。
假设一张没有索引的 users 表存放了 1000 万条用户记录,当你执行:
SELECT * FROM users WHERE username = 'john_doe';数据库只能从第一条记录开始,逐行扫描整张表,直到找到匹配项。 这就是 全表扫描(Full Table Scan),时间复杂度是 O(N),在大数据量下极其低效。
而索引能将查找复杂度从 O(N) 降低到 O(logN) —— 性能提升可能达到上百倍。
你可能会问:为什么不用更简单的二叉树或 AVL 树?
| 数据结构 | 问题 |
|---|---|
| 二叉树 | 顺序插入时退化成链表,查询效率回到 O(N)。 |
| 平衡二叉树(AVL) | 虽然平衡,但每个节点只有两个子节点,树高过大,磁盘 I/O 次数太多。 |
数据库存储在磁盘上,每次节点访问都是一次磁盘 I/O。 B+树的设计目标:最小化磁盘 I/O 次数。
于是,B+树 —— 一种 多路平衡查找树(Multi-way Balanced Search Tree) 登场。
B+树由两类节点组成: