如何在CASSANDRA中搜索特定范围内的参数

2024-05-16 20:27:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我对卡桑德拉不熟悉,所以这个问题可能太简单了

我试图对一个具有分区键的表执行查询,该分区键由两个组件组成:refid和partid。我遇到的问题是partid的数量可能很大(并且对于不同的refid不同)。我现在的问题是:

SELECT * FROM contigs WHERE refid=29179863 AND partid IN (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);

我想做的是创建一个如下所示的查询:

SELECT * FROM contigs WHERE refid=29179863 AND partid IN range(0,21);

有办法吗?我希望避免先在python中创建查询字符串,然后在Cassandra中执行它


Tags: and字符串infrom数量组件rangewhere
1条回答
网友
1楼 · 发布于 2024-05-16 20:27:35

select查询中使用IN作为分区键可能会导致性能问题。 指定refid作为分区键,而partid作为集群键,您将能够通过partid进行范围查询

CREATE TABLE contigs ( 
    refid int,
    partid int,
      ... other fields...
    PRIMARY KEY ((refid), partid) 
);

查询partid范围:

SELECT * FROM contigs WHERE refid=29179863 AND partid >= 0 AND partid < 21;

但请注意,cassandra限制分区键内有20亿行,因此在本例中,refid的分区数不能超过20亿

相关问题 更多 >