为什么数据库索引选择B+树而不是Hash?从磁盘IO特性到范围查询的技术真相

title: “为什么数据库索引选择B+树而不是Hash?从磁盘IO特性到范围查询的技术真相” date: “2026-03-07T05:05:02+08:00” description: “为什么数据库索引选择B+树而不是Hash?从磁盘IO特性到范围查询的技术真相” draft: false categories: [“数据库”, “系统设计”] tags: [“B+树”, “Hash索引”, “数据库索引”, “InnoDB”, “PostgreSQL”, “磁盘IO”, “范围查询”] 1972年,Rudolf Bayer和Edward McCreight在波音研究实验室工作时遇到了一个棘手问题:如何高效地组织存储在磁盘上的大量有序数据?他们在当年发表的论文"Organization and Maintenance of Large Ordered Indexes"中提出了B树(B-tree),这个数据结构在此后的半个世纪里统治了数据库索引设计。但有一个疑问始终困扰着许多开发者:Hash表在内存中拥有O(1)的查找效率,为什么数据库偏偏选择了看起来更慢的B+树? ...

8 min · 3671 words