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