最新消息: 关于Git&GitHub 版本控制你了解多少?
您现在的位置是:群英 > 数据库 > MySQL数据库 >
MySQL索引底层原理怎样理解?看完这篇就知
PHP中文网发表于 2021-08-21 16:15 次浏览

    MySQL索引底层原理怎样理解?MySQL是我们最常的使用数据库之一,但是很多朋友对MySQL索引以及MySQL索引底层原理这些不是很了解,对此,下面小编就给大家来介绍一下,感兴趣的朋友就继续往下看吧。

    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优点:

    ①磁盘读写代价更低;
    ②查询速度更稳定。

    全文索引

    FullText(全文)索引,仅可用于MyISAM和InnoDB,针对较大的数据,生成全文索引非常的消耗时间和空间。
    在生成FullText索引时,会为文本生成一份单词的清单,在索引时会根据这个单词的清单进行索引。

    关于MySQL索引底层原理的介绍就到这了,上文有对MySQL索引的特点介绍等等,希望对大家学习和理解MySQL索引有帮助,想要了解更多MySQL索引的内容,请关注群英网络其它相关文章。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
相关信息推荐