仅通过组合主键表中的一个主键进行搜索时,Spanner行为不同。例如,如果一个表具有ColA和ColB作为主键(定义主键时以相同的顺序提到)。如果您通过第一个键select * from table where ColA = 'dfdf'
进行搜索,则它将扫描几行并带来更快的〜10ms结果。但是,如果您通过第二个键select * from table where ColB = 'dfdf'
进行搜索,则会进行全表扫描。为什么会出现这种不一致的情况,如果我们不按全键搜索,则应该对全表或特定行进行扫描。主键已建立索引,因此永远不要进行全表扫描。
答案 0 :(得分:0)
复合键不是2个单独的键,而是一个由2个部分串联而成的单个键...
想象一下一个按字母顺序排列的单词列表...查找首字母为H的单词很容易... 但是您怎么找到所有 second 字母为'H'的单词...
唯一的方法是对所有单词进行完整扫描-除非单词的第二个字母有第二个索引,这就是第二个索引的目的。