主键中的所有值都已索引吗?

Are all values in a Primary Key Indexed?

在 Cassandra 教程之后,有人提到如果我执行以下操作:

PRIMARY KEY(id, name) id 是分区键,因此它被编入索引。该名称是聚类列,因此它也被编入索引。这意味着我可以执行如下查询:

SELECT * FROM my_table WHERE id = 'id_abc'; //this works!

我也可以这样查询:

SELECT * FROM my_table WHERE id = 'id_abc' AND name = 'name_123'; // this works!

但是,我无法执行以下查询:

SELECT * FROM my_table WHERE name = 'name_123'; // this does not work 

如果对聚簇列进行了索引,为什么最后一条语句不起作用?为什么第一个查询有效而不是第二个?

最后一次查询得到的错误如下:

InvalidRequest: code=2200 [Invalid query] message="Cannot execute this query as it might involve data filtering and thus may have unpredictable performance. If you want to execute this query despite the performance unpredictability, use ALLOW FILTERING"

提前致谢!

只是因为它被命名为主键,所以在 cassandra 中没有索引。 ìd 是您的分区键 - 它定义了 cassandra 中的哪个节点负责您的 id。集群列 name 定义分区内的顺序。

因此SELECT * FROM my_table WHERE name = 'name_123'; // this does not work需要扫描所有分区,cassandra默认拒绝。