非唯一二级索引的 Key 中为什么包括 RowID?

【 TiDB 使用环境】测试
【 TiDB 版本】6.5.0
【复现路径】https://book.tidb.io/session1/chapter3/tidb-kv-to-relation.html
【遇到的问题:问题现象及影响】
文档中显示:
对于不需要满足唯一性约束的普通二级索引,一个键值可能对应多行,我们需要根据键值范围查询对应的 RowID。 因此,按照如下规则编码成 (Key, Value) 键值对:

Key: tablePrefix{TableID}_indexPrefixSep{IndexID}indexedColumnsValue{RowID}
Value: null

有以下几个问题:
1)需要根据键值范围查询对应的 RowID,是什么含义?
2)indexedColumnsValue 没有加花括号 {},所以 key 中不包括实际索引列的值吗?
3)为什么非唯一二级索引的 Value 为 null,那么索引怎么使用呢?从 key 中取出 RowID,然后回表获取整行数据吗?

【资源配置】

【附件:截图/日志/监控】

  1. 根据索引key值找到 对应的rowid
  2. 包含索引列值,索引就是列值和行地址额映射
  3. 非唯一二级索引 如果key只使用索引列值的话重复的值会造成重复的key,因此把rowid加到了key, 而key的value不需要存任何值了,使用时直接从key提取rowid回表
1 个赞

谢谢大佬

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。