我可以对Cassandra中的非主键属性使用IN运算符吗?还是其他替代方法,而不是在查询中使用IN?
SELECT * FROM abc WHERE domain IN ('domain1','domain2') allow filtering;
Error from server: code=2200 [Invalid query] message="IN predicates on non-primary-key columns (domain) is not yet supported"
答案 0 :(得分:0)
您能为我的目的为cassandra中的IN运算符推荐任何替代方法吗?
请记住,仍然可以在分区键上使用IN
运算符。它不会说它是 recommended ,但可以使用少量参数就可以了。不过,首先,您必须重新构建表或构建新表以支持该查询。
由于我不知道您的确切表定义,因此我要作一些假设(例如abc_id
)。
如果您重新创建与此类似的表:
CREATE TABLE abc_by_domain (
domain TEXT,
abc_id TEXT,
value TEXT,
PRIMARY KEY (domain,abc_id));
现在向其中写入一些数据,然后可以正常工作:
SELECT * FROM abc_by_domain WHERE domain IN ('domain1','domain2');
domain | abc_id | value
---------+--------+---------
domain1 | 1 | 1st row
domain2 | 2 | 2nd row
(2 rows)
注意:
abc_id
当前的主键。本质上,我做了一个集群键,以确保现在按域划分的基础行仍然是唯一的。就您而言,请使用abc
表中任何可增强唯一性的键列,并将其用作聚类键来完成同一件事。