我知道怎么用 b+树索引字段类型是数字的数据,但是怎么用 b+树索引字段类型是字符串类型的数据呢?

2019-01-17 16:21:40 +08:00
 linxiaoziruo

比如有一张表,主键 ID 是数组,我知道 B+树是怎么存储 ID 作为索引的。但是有另外一个 name 字段,name 字段是字符串类型的,在 name 字段上建索引,这个索引结构是什么样子的呢? B+树是怎么存储 name 字段的索引的呢?

1649 次点击
所在节点    问与答
2 条回复
wind3110991
2019-01-17 17:29:33 +08:00
可以默认按 name 首字母来顺序排序,以 InnoDB 为例子:
例如:Alice、Allen、Ben、Bob、Peter

那么可能上一级索引为:
A -> B ->P

然后卫星节点(叶子)为:
( 1 ) Alice -> Allen -> Ben -> Bob -> ( 2 ) Peter

当然,name 作为字符串的话,你也可以选择以字符串的一部分建立索引:
Al -> Be ->Bo -> Pe

叶子为:
( 1 ) Alice->Allen -> ( 2 ) Ben ->Bob -> Peter
CaptainKevin
2019-01-18 10:27:59 +08:00
name 的值作为 b+树排序的键,name 所在记录的主键 id 作为 b+树相应节点所在的值

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/527973

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX