非唯一索引的KV编码

https://docs.pingcap.com/zh/tidb/stable/tidb-computing#索引数据和-key-value-的映射关系
官方文档中描述的非唯一索引的KV编码为:
Key: tablePrefix{TableID}_indexPrefixSep{IndexID}_indexedColumnsValue_{RowID}
Value: null
疑问:当表中N条记录的索引列值相同时,那么在二级索引中是记录N条KV记录,还是只记录一条或者几条?如果不是记录N条记录,那Key中的{RowID}对应谁?

我举个例子吧,表t中有个status字段,它只有10种可选值1~10,我在status字段上建了索引。现在表t有10万行记录,那么status索引的KV记录是10条、10万条,还是其它数量?如果status索引的KV记录不是10万条,那Key中的RowID对应哪些行的ROWID?

RowID 就是指向 索引关联的数据的唯一主键了,如果是聚簇索引,就是唯一主键,如果是其他类型的,可能是 _tidb_row_id

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

indexedColumnsValue 这个值才是比较重要的部分,用来做索引识别的

参考文档
https://docs.pingcap.com/zh/tidb/stable/tidb-computing#索引数据和-key-value-的映射关系

请仔细读一下问题,谢谢

热点索引听说过没?

二级索引,你有多少实际记录,就会有多少条二级索引,你可以自己尝试一下

嗯,我想了一下,应该是我对二级索引理解错了,谢了

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