加入收藏 | 设为首页 | 会员中心 | 我要投稿 徐州站长网 (https://www.0516zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql索引的数据结构,各?优劣

发布时间:2023-01-14 09:34:04 所属栏目:MySql教程 来源:转载
导读: 概要

索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash索引,B+树索引等,
InnoDB存储引擎的默认索引实现为:B+树索引。对于哈希索引来说,底层的数据结构就是哈希

概要

mysql 建表 索引_mysql表索引_mysql索引表

索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash索引,B+树索引等,

InnoDB存储引擎的默认索引实现为:B+树索引。对于哈希索引来说,底层的数据结构就是哈希表,因此在绝大多数需求为单条记录查询的时候(根据订单号、运单号、id查询场景),可以选择哈希索引,查询性能最快;其余?部分场景,建议选择BTree索引。

「B+树索引」

mysql 建表 索引_mysql索引表_mysql表索引

mysql表索引_mysql索引表_mysql 建表 索引

多条件范围查询场景

B+树是?个平衡的多叉树,从根节点到每个叶?节点的?度差值不超过1,?且同层级的节点间有指针相互连接。在B+树上的常规检索,从根节点到叶?节点的搜索效率基本相当,不会出现?幅波动,?且基于索引的顺序扫描时,也可以利?双向指针快速左右移动,效率?常?。因此,B+树索引被?泛应?于数据库、?件系统等场景。

「哈希索引」

mysql 建表 索引_mysql索引表_mysql表索引

单维度指定条件查询

哈希索引就是采??定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B+树那样从根节点到叶?节点逐级查找,只需?次哈希算法即可?刻定位到相应的位置,速度?常快,如果是等值查询(where orderid=‘xxx’),那么哈希索引明显有绝对优势,因为只需要经过?次算法即可找到相应的键值;前提是键值都是唯?的。如果键值不是唯?的,就需要先找到该键所在位置,然后再根据链表往后扫描,直到找到相应的数据;

如果是范围查询检索,这时候哈希索引就毫无用武之地了,因为原先是有序的键值,经过哈希算法后,有可能变成不连续的了,就没办法再利用索引完成范围查询检索;

总结

哈希索引也没办法利用索引完成排序mysql索引表,以及like ‘xxx%’ 这样的部分模糊查询(这种部分模糊查询,其实本质上也是范围查询);哈希索引也不支持多列联合索引的最左匹配规则;

B+树索引的关键字检索效率?较平均,不像B树那样波动幅度?,在有?量重复键值情况下,哈希索引的效率也是极低的,因为存在哈希碰撞问题。

(编辑:徐州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!