我正在尝试对amazon上的集群列执行查询,因为我不想在我的原生查询中使用允许过滤,所以我创建了4-5个集群列,以提高性能。
但是,在尝试使用>=和<=对两个集群列进行过滤时,我收到以下消息时出错了
message=“群集列”"start_date“不能被限制(前面的列"segment_id”受非情商关系的限制)“”
我也尝试过使用多列查询,但我不支持错误message="MultiColumn关系还不支持“。
查询引用
从table_name中选择*,其中shard_id = 568,customer_id = '10‘和customer_id= 568113,(segment_id,start_date,end_date)>= (-1,'2022-05-16','2017-03-28')和标志= 1;
或
从table_name中选择*,其中shard_id =5 68,customer_id = '10‘,customer_id= 568113,segment_id > -1,start_date =’2022-05-16‘;
发布于 2022-08-01 12:04:33
我假设您的表具有以下主键:
CREATE TABLE table_name (
...
PRIMARY KEY(shard_id, division, customer_id, segment_id, start_date, end_date)
)在任何情况下,CQL查询都是无效的,因为您只能在查询中的最后一列上应用不等式运算符。例如,这些是基于表架构的有效查询:
SELECT * FROM table_name
WHERE shard_id = ? AND division = ?
AND customer_id <= ?
SELECT SELECT * FROM table_name \
WHERE shard_id = ? AND division = ? \
AND customer_id = ? AND segment_id > ?
SELECT SELECT * FROM table_name \
WHERE shard_id = ? AND division = ? \
AND customer_id = ? AND segment_id = ? AND start_date >= ?除查询中的最后一个群集列外,前面的所有列都必须由相等运算符筛选。
如果查询需要复杂的谓词,则需要使用Elasticsearch或Apache等工具对Cassandra数据进行索引。它们将允许您运行复杂的搜索参数从数据库中检索数据。干杯!
发布于 2022-11-17 21:27:20
允许过滤有时会受到不好的惩罚。这完全取决于你扫描了多少行。了解每个分区将扫描多少行并从那里向后工作是很好的。只有最后一列才能包含绑定范围的不平等语句。尝试命令您的列先删除大多数列,这样可以减少“筛选”的行数。
在下面的示例中,我们使用索引键开始日期,并在end_data、segment_id和标志上进行筛选。
select * from table_name where shard_id = 568 and division = '10' and customer_id = 568113 and start_date >= '2022-05-16' and end_date > '2017-03-28') and (segment_id > -1 flag = 1;```https://stackoverflow.com/questions/73192124
复制相似问题