对比下两者的优劣 哈希表:keys——>hash算法——>固定长度的keys地址 存在数据碰撞问题,hash算法对不同的key可能会计算出相同的结果。这就需要链地址法把碰撞的数据连接起来,计算哈希值后还需要检查该哈希值是否存在碰撞数据链表,有则一直遍历到链表尾部,直到找到真正的key对应数据为止。 哈希算法的时间复杂度为O(1),所以检索速度很快。但对于范围查找的数据检索则无法给出固定的key。 B+树是建立在B树的基础上,区别是B树一个节点里存储的是数据,而B+存储的是索引地址,B+树的叶子节点存所有的数据。 B树和B+树的时间复杂度取决于树的高度,减少了磁盘的IO,支持范围查找。 B+树存储的索引,所以即使在节点有限容量的情形下也可以存储大量的索引使树的高度降低,B+树的叶子节点是数据阶段用一个链表串联起来便于范围查找。 因此 Mysql 的索引用的就是 B+树,B+树在查找效率、范围查找中都有着非常不错的性能。