mysql b 树 字符串索引_关于MYSQL中B+树索引存储和查找

七十亿兄你好:

首先来说,UUID 或者其他的不具有业务含义的字符串作为 MySQL 的主键肯定是不合适的,这会严重降低 MySQL 的性能(具体原因我不再解释了,视频课程中和网络上的博客、文章应该也是有很多介绍讲解的)。

那么,如果就是用 UUID 作为主键会出现怎样的效果呢?也就是你这里的两个问题应该怎么回答呢?其实核心还是不管是主键索引(也叫做聚簇索引)还是其他的某一列、某几列构成的联合索引,其索引的构造是完全一致的(否则,有多套索引排序规则,也是难以维护而且难以理解的)。针对于 InnoDB 而言:

1. 排序规则会按照字符串的顺序去做排序(其他的列索引也是一样的,想一想,你会给字符串的列加上索引),但是,需要注意,它不会导致包含数据的页面被重写。如果页面上有空间,那么它将被放置在该页面中。将重新格式化单个页面,以将行放在页面中的正确位置;当页面已满时,将发生页面拆分,页面上的一半行转到一页,另一半转到另一页,然后将页面重新链接到包含具有聚簇索引的表数据的页面的链接列表中;

2. 叶子节点内部并不是无规律的字符串,它是按照字符串的顺序排列的,二分查找仍然可以作用于字符串的查找(其实,只要你设定好了比较算法,二分查找对于任何数据类型都可以生效,无非就是按照你的比较规则查询就可以了)

我是勤一,致力于将这门课程的问答区打造为 Java 知识体系知识库,Java 知识体系 BBS!共同建造、维护这门课程,我需要每一个你!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值