时间:2021-07-01 10:21:17 帮助过:14人阅读
优点:
缺点:
常见的索引结构有Hash索引、B- Tree 索引和B+ Tree索引。MySQL索引底层采用的数据结构是B+ Tree。为什么不使用Hash索引和B- Tree索引呢?
首先我们我们看一Hash索引:
哈希索引是基于哈希表实现的,哈希表是键值对的集合,通过键(key)即可快速取出对应的值(value),因此哈希表可以快速检索数据(接近 O(1))。 为何能够通过 key 快速取出 value呢?原因在于 哈希算法(也叫散列算法)。通过哈希算法,我们可以快速找到 value 对应的 index,找到了 index 也就找到了对应的 value。哈希算法有个 Hash 冲突 问题,也就是说多个不同的 key 最后得到的 index 相同。通常情况下,我们常用的解决办法是 链地址法。链地址法就是将哈希冲突数据存放在链表中。JDK1.8 之前 HashMap 就是通过链地址法来解决哈希冲突的。不过,JDK1.8 以后HashMap为了减少链表过长的时候搜索时间过长引入了红黑树。
既然哈希表能够进行快速索引,为什么MySQL没有把它当做数据结构呢?主要有以下两个原因:
未完待续...
MySQL--索引
标签:bsp hash family 数据结构 修改 就是 散列 style 取出