我希望构建一个表,该表将允许我按时间戳和区域过滤行。这是我在下面看到的:
CREATE TABLE event_start(
user_id text,
ts timestamp,
region text,
PRIMARY KEY(ts, region)
)
WITH CLUSTERING ORDER BY(region DESC);
当我尝试按区域选择和排序结果时,我遇到了"仅当分区键受 EQ 或 IN 限制时,才支持 ORDER BY"。我想我理解错误消息,但我无法构思解决方案。这是否与主键与群集键有关?
谢谢!
不能通过聚类分析列直接查询此表。必须提供分区键。
可以在没有分区键的情况下进行查询 - 只能通过聚类列:但它会导致 Cassandra 扫描所有分区!!!为此,您需要在查询中附加允许过滤。
以下是查询顺序:
- 首先 – 必须提供分区键
- 聚类列可以在之后进行
- 它可以对聚类列执行相等(=( 或范围查询
- 所有相等比较都必须在不平等比较之前进行
- 范围搜索是二分搜索,然后是线性读数
您可以还原键列以满足查询:
CREATE TABLE event_start(
user_id text,
ts timestamp,
region text,
PRIMARY KEY(region, ts)
);