当我在Cassandra中使用“允许过滤”时,我会得到无序的结果吗?

pn9klfpd  于 4个月前  发布在  Cassandra
关注(0)|答案(1)|浏览(48)

我有一个表,我执行一个查询,我希望它返回有序的结果,但它返回一个无序的结果。
下一张table:

CREATE TABLE videogames_by_release(
    game_title VARCHAR,
    id_game UUID,
    descripcion VARCHAR,
    min_age INT,
    genderSET <VARCHAR>,
    release_date DATE,
    release_month VARCHAR,
    PRIMARY KEY ( release_month , release_date , min_age ,  game_title )
)WITH CLUSTERING ORDER BY (release_date ASC, min_age ASC, game_title DESC);

字符串
问题是:返回所有最小用户年龄大于或等于18岁的视频游戏的数据。
我做了下一个查询:

SELECT * FROM videogames_by_release WHERE min_age >=18 ALLOW FILTERING;


但我得到的结果是无序的。为什么?
结果是下面的图像:
result
为什么从朱尼奥而不是阿布里尔开始?

1mrurvl1

1mrurvl11#

是的,ALLOW FILTERING永远不应该被使用。它 * 也许 * 可以与分区键结合使用,例如,

SELECT ... FROM ... WHERE release_month = ? AND min_age >= ? ALLOW FILTERING;

字符串
在这种情况下,它只会在分区键中搜索,但是如果你以你正在使用的方式使用它,它会在所有分区和集群中的所有节点上对表进行整个扫描,这是一个不好的做法。
额外好处:您可以使用this free browser-based教程开始学习C* 数据建模,以了解其中的细微差别。

相关问题