另一种选择是,您可以专门为此查询(查询表)构建一个表,其中filter1 作为分区键,id 作为集群键。这样一来,您的查询就可以正常工作,并且您可以避免使用二级索引。
aploetz@cqlsh:stackoverflow> CREATE TABLE log
(filter1 text,
id text,
msg text,
PRIMARY KEY (filter1, id));
aploetz@cqlsh:stackoverflow> INSERT INTO log (filter1, id, msg)
VALUES ('filter','A','message A');
aploetz@cqlsh:stackoverflow> INSERT INTO log (filter1, id, msg)
VALUES ('filter','B','message B');
aploetz@cqlsh:stackoverflow> INSERT INTO log (filter1, id, msg)
VALUES ('filter','C','message C');
aploetz@cqlsh:stackoverflow> SELECT msg FROM log
WHERE filter1='filter' AND id IN ('A','B');
msg
-----------
message A
message B
(2 rows)
您仍然会使用一个“IN”,它也不知道性能是否良好。但是你也需要指定一个分区键,所以它的性能可能比预期的要好。