说我有以下Cassandra表:
CREATE TABLE experiment(
bin text,
x double,
y double,
PRIMARY KEY ((bin), x)
);
我想获得x大于10的y值。以下两种方法中哪一种最有效?
启用允许过滤:
SELECT x, y FROM experiment WHERE x > 10 ALLOW FILTERING;
首先获取分区键列表,然后运行多个并发查询,每个分区一个,省略了允许过滤的需要。
SELECT distinct bin FROM experiment;
SELECT x, y FROM experiment WHERE bin = <bin> AND x > 10; //for each bin
是否有可能采用替代方法(可能更改表格设计)更有效?
提前致谢!
编辑作为评论的答案:
这是一个构造的例子。真实数据将是各种传感器测量的列表:
time-stamp, subject-id, temperature, noise ...
我们想要的查询是给出温度低于10度的噪音水平(在所有测量中,在所有对象上)。我不介意使用不同的分区策略切换到不同的表设计,如果这将有利于查询。