对不起,标题可能会/可能不会详细说明我的意图。Cassandra选择可能没有主键的集群密钥范围
这是问题所在。我需要根据日期范围选择数据,并且我们的大多数查询都有用于查询的'id'字段。
所以,我已经创建了数据模型,ID为主键,日期为集群键。
本质上就像下面(我只是使用假/示例语句,因为我不能给出实际的细节)。
create table tab1(
id text,
col1 text,
... coln text,
rec_date date,
rec_time timestamp,
PRIMARY KEY((id),rec_date,rec_time)
) WITH CLUSTERING ORDER BY rec_date DESC, rec_time DESC;
它适用于大多数的查询和工作正常。
但是,我试图优化以下情况。
- >所有比日ABCD-XY-KL
哪个以下方法之一将是为我好,更多的记录?或者比这两个更好。
1)非常基本或简单的方法。使用查询:
select * from tab1 where id > '0' AND rec_date > 'abcd-xy-kl'
每条记录将基本上是比 '0' 更高。它可能仍然会进行全表扫描。
2)创建于rec_date二级指标和简单的使用查询:
select * from tab1 where rec_date > 'abcd-xy-kl'
此外,一个关键的事情是我使用的火花,并使用cassandraSqlContext.sql得到数据框。
所以,考虑到以上所有的细节,哪种方法会更好。