Spanner - 按复合主键行为搜索

Spanner - search by composite primary key behavior

仅按复合主键中的主键之一进行搜索时 table Spanner 的行为有所不同。例如,如果 table 将 ColA 和 ColB 作为主键(在定义主键时以相同的顺序提及)。如果您按第一个键 select * from table where ColA = 'dfdf' 搜索,那么它会扫描几行并更快地带来结果 ~10ms。但是,如果您通过第二个键 select * from table where ColB = 'dfdf' 进行搜索,那么它会进行完整的 table 扫描。为什么会出现这种不一致,如果我们不是按全键搜索,那么它应该进行全 table 或特定行扫描。主键已编入索引,因此永远不会进行完整 table 扫描。

复合键不是 2 个单独的键,而是一个由 2 个部分连接而成的键...

想象一个单词列表,按字母顺序排序...找到首字母为 H 的单词很容易... 但是你如何找到所有 second 字母是 'H'...

的单词

唯一的方法是对所有单词进行完整扫描——除非单词的第二个字母有第二个索引,这就是二级索引的用途..