先谈谈数据库底层可选的索引方式:
建表添加索引时,不难发现,此处的下拉菜单只有两种类型的索引方式BTREE和HASH
1 Hash(哈希):
哈希作为一种常用的加密算法,从数据结构的角度出发,其底层是通过index=hash(xxx) 得到一个唯一加密结果,即内存地址,通过内存地址来获取value值,其实是一种key–>value类型的映射关系,通常在Redis、Memcatched等非关系型数据库中有用到,其最大的特点就是***可以快速的精确查询,但是不支持范围查询***,由于key值无法支持范围查询,如果做成了索引,那速度也是很慢的,要全部扫描,因此MySQL不得不舍弃这种数据结构;
2 二叉树:
再来看看为什么不选用平衡二叉树,平衡二叉树的节点之间相关联,底层作为一个双向链表,自然也支持范围搜索,但是缺点也很明显,如果需要在一个节点插入元素时,其余的节点不得不往后移,成本会很大;
3 B树
B树(B-tree)也是一种树状结构,可以存储数据、排序以及以O(log n)的时间复杂度进行查找、顺序读取、插入删除等操作。
MySQL底层为何不选平衡二叉树,而使用B+树,看完恍然大悟
最新推荐文章于 2024-09-13 16:18:31 发布