如果我按二级索引查询,它是如何排序的?

kxeu7u2r  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(375)

我在Cassandra的table上做的。

CREATE TABLE user_event(
    userId bigint,
    type varchar,
    createdAt timestamp,
    PRIMARY KEY ((userId), createdAt)
) WITH CLUSTERING ORDER BY (createdAt DESC);
CREATE INDEX user_event_type ON user_event(type);

如果我按userid查询,查询结果将按createdat列排序。

SELECT * FROM user_event WHERE userId = 1;

但是如果我按类型查询,它是如何排序的呢?我能得到最后的签名吗?

SELECT * FROM user_event WHERE userId = 1 AND type = 'SIGN_IN' LIMIT 1;

有没有任何保证结果是由createdat订购的?

olqngx59

olqngx591#

理解这种情况的关键是要记住,结果集顺序只能在分区内强制执行。因为您仍在按分区键进行查询( userId )每个分区内的所有数据仍将按顺序排列 createdAt (降序)。
“保证”是一个很强的词,我不太愿意用。以这种方式查询的结果应保持其磁盘排序顺序。我肯定会试试看。但只要你提供 userId 作为查询的一部分,返回的结果应按 createdAt .

相关问题