Cassandra范围查询

vptzau2j  于 2021-06-14  发布在  Cassandra
关注(0)|答案(1)|浏览(395)

假设我有一张table: 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)后停止
或者
2) 它有一种机制,可以在大约4.1秒的时间直接开始扫描?
如果这样的机制不可用,索引是否适合此范围查询?
谢谢你的提示!

xbp102n0

xbp102n01#

假设你的钥匙是 PRIMARY KEY (PartKey, Cluster_Time) . 提供实际的模式会有所帮助。
隔板 p1 磁盘上的所有行将按群集顺序排列。读取将使用sstable的index组件,该组件每64kb(默认值)集群键就有一个标记,以尽可能接近 Cluster_Time = 2.0 ,跳过行,直到到达为止,然后继续读取并返回行,直到 Cluster_Time <= 4.0

相关问题