diff --git a/mysql/index/index_interview.md b/mysql/index/index_interview.md index 342637fa..1d4bb558 100644 --- a/mysql/index/index_interview.md +++ b/mysql/index/index_interview.md @@ -152,9 +152,15 @@ B+Tree 只在叶子节点存储数据,而 B 树 的非叶子节点也要存储 ***3, B+Tree vs Hash*** -Hash 在做等值查询的时候效率贼快,搜索复杂度为 O(1)。 +Hash 在做等值查询的时候效率贼快,搜索复杂度为 O(1)。但也有其局限性: -但是 Hash 表不适合做范围查询,它更适合做等值的查询,这也是 B+Tree 索引要比 Hash 表索引有着更广泛的适用场景的原因。 +- **数据顺序性**:哈希表无法提供数据的顺序访问,更适合做等值的查询。很多查询不仅需要找到特定的键值,还需要根据键值排序来返回结果,或者执行范围查询。B+Tree 可以很好地支持,Hash 表则无法做到。 + +- **空间效率**:可能导致空间利用效率不高,特别是在处理大量数据时。数据量变大时冲突也会增加。 + +- **需要重新构建**:哈希索引通常只存储在内存中,当数据库重启或发生崩溃时,需要重新构建。 + +因此,B+Tree 索引要比 Hash 表索引有着更广泛的适用场景。 ### 按物理存储分类