【5分钟背八股】mysql索引结构有哪些,各自的优劣是什么?

源代码 2024-9-2 13:25:57 42 0 来自 中国
索引的数据结构和详细存储引擎的实现有关,mysql中使用较多的索引有hash索引,B+树索引,innodb的索引实现为B+树,memory存储引擎为hash索引。
B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不凌驾1,而且同层级的二节点间有指针干系毗连,在B+树上的通例检索,从根节点到叶子节点的搜索服从根本相称,不会出现大幅颠簸,而且基于索引的次序扫描时,也可以使用双向指针快速左右移动,服从非常高。因为,B+树索引被广泛应用于数据库、文件体系等场景。
哈希索引就是接纳肯定的哈希算法,把键值换算成新的哈希值,检索时不必要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置,速率非常快。
如果是等值查询,那么哈希索引显着有绝对上风,因为只必要颠末一次算法即可找到相应的键值,条件是键值都是唯一的。如果键值不是唯一的,就必要先找到该键所在位置,然后再根据链表以后扫描,知道找到对应的数据
如果是范围查询检索,这时间哈徐索引就毫无用武之地了,因为原先是有序的键值,颠末哈希算法后,有大概变成不连续的了,就没办法再使用索引完成范围查询检索
哈希全部也没办法使用索引完成排序,以及like如许的部门含糊查询
哈希索引也不支持多列团结索引的最左匹配规则
B+树索引的关键字检索服从比力均匀,不像B树那样颠簸大,在有大量重复键值情况下,哈希索引的服从也是极低的,因此存在哈希碰撞标题。
1.jpeg
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-19 06:16, Processed in 0.169079 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表