Cassandra范围查询聚类键

时间:2019-09-30 14:30:14

标签: time cassandra range intervals

假设我有这张表:Table1(PartKey, Cluster_Time DESC),带有以下元组:

(p1   ,   6.0)
(p1   ,   5.3)
(p1   ,   4.1)
(p1   ,   3.3)
(p1   ,   2.3)
(p1   ,   1.2)
(p1   ,   0.1)

现在假设我进行以下查询:

SELECT *
FROM Table1
WHERE PartKey = "p1" AND Cluster_Time >= 2.0 AND Cluter_time <=4.0;

我想了解以下内容。

卡桑德拉(Cassandra)做

1)从头开始扫描分区p1,并在到达元组(p1,2)后停止扫描

OR

2)它具有一种可以在大约4.1时直接开始扫描的机制吗?

如果这种机制不可用,索引是否适合此范围查询?

感谢任何提示!

1 个答案:

答案 0 :(得分:3)

假设您的密钥是PRIMARY KEY (PartKey, Cluster_Time)。提供您的实际架构会有所帮助。

磁盘上的

分区p1将具有群集顺序的所有行。读取将使用sstable的索引组件,该索引组件每64kb(默认)聚簇键都有一个标记,以使其尽可能接近Cluster_Time = 2.0,跳过行直到到达,然后继续读取并返回行,直到Cluster_Time <= 4.0