linxiaoziruo
V2EX  ›  问与答

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

  •  
  •   linxiaoziruo · Jan 17, 2019 · 2050 views
    This topic created in 2675 days ago, the information mentioned may be changed or developed.

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

    wind3110991
        1
    wind3110991  
       Jan 17, 2019   ❤️ 1
    可以默认按 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
        2
    CaptainKevin  
       Jan 18, 2019 via Android   ❤️ 1
    name 的值作为 b+树排序的键,name 所在记录的主键 id 作为 b+树相应节点所在的值
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2897 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:00 · PVG 23:00 · LAX 08:00 · JFK 11:00
    ♥ Do have faith in what you're doing.