共计 1069 个字符,预计需要花费 3 分钟才能阅读完成。
自动写代码机器人,免费开通
这篇文章主要介绍 MySQL 索引的底层实现原理是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
MySQL 索引的底层实现原理
1、Hash 索引
2、BTree 索引和 B +Tree 索引
3、全文索引
(1)BTree 索引
(2)B+Tree 索引
(3)B+Tree 对比 BTree 优点:
一、前言
二、索引类型
一、前言
MySQL 支持诸多存储引擎,而各种存储引擎对索引的支持也各有不同,因此 MySQL 数据库支持多种索引类型,如 BTree 索引,B+Tree 索引,Hash 索引,全文索引等等。
二、索引类型
1、Hash 索引
只有 memory(内存)存储引擎支持 Hash 索引,Hash 索引引用索引列的值计算该值的 hashCode,然后在 hashCode 相应的位置存储该值所在行数据的物理位置,因为使用散列算法,因此访问速度非常快,但是一个值只能对应一个 hashCode,而且是散列的分布式,因此 Hash 索引不支持范围查找和排序的功能。
2、BTree 索引和 B +Tree 索引
(1)BTree 索引
BTree 索引是平衡搜索多叉树木,如果设树的深度为 2d(d 1),高度为 h,那么 BTree 要满足以下条件:
①每个叶子结点的高度要一样,等于 h;
②每个叶子节点由 n - 1 个 key 和 n 个指针 point 组成,其中 d = n = 2d,key 和 point 相互间隔,结点两端一定是 key;
③叶子结点指针都为 null;
④非叶子结点的 key 都是 [key,data] 二元组,其中 key 表示作为索引的键,data 为键值所在行的数据。
(2)B+Tree 索引
B+Tree 是 BTree 的一个变种,如果设 d 为树的度,h 为数的高度,B+Tree 和 BTree 的不同主要在于:
①B+Tree 中的非叶子结点不存储数据,只存储键值;
②B+Tree 的叶子结点没有指针,所有键值都会出现在叶子结点上,且 key 存储的键值对应 data 数据的物理地址;
③B+Tree 的每个非叶子结点由 n 个键值 key 和 n 个指针 point 组成。
(3)B+Tree 对比 BTree 优点:
①磁盘读写代价更低;
②查询速度更稳定。
3、全文索引
FullText(全文)索引,仅可用于 MyISAM 和 InnoDB,针对较大的数据,生成全文索引非常的消耗时间和空间。
在生成 FullText 索引时,会为文本生成一份单词的清单,在索引时会根据这个单词的清单进行索引。
以上是“MySQL 索引的底层实现原理是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注丸趣 TV 行业资讯频道!
向 AI 问一下细节