我希望建立一个表,使我能够过滤行的时间戳和地区。以下是我的资料:
CREATE TABLE event_start(
user_id text,
ts timestamp,
region text,
PRIMARY KEY(ts, region)
)
WITH CLUSTERING ORDER BY(region DESC);
当我尝试按区域选择并排序结果时,遇到“仅当分区键受eq或in限制时才支持排序方式”。我想我理解错误消息,但我在构思解决方案时遇到了问题。这与主键和集群键有关吗?
谢谢!
1条答案
按热度按时间nnsrf1az1#
不能通过聚集列直接查询此表。必须提供分区密钥(ts)。
您可以不使用分区键进行查询–只能通过聚集列进行查询:但它会导致cassandra扫描所有分区!!!!为此,您需要在查询中附加allow filtering。
查询顺序如下:
首先–必须提供分区密钥
聚类列可以跟在后面
它可以对集群列执行相等(=)或范围查询
所有的平等比较必须先于不平等比较
范围搜索是二进制搜索,然后是线性读取
可以还原键列以满足查询: