“仅当分区键受eq或in限制时才支持order by”cassandra

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

我创建了这样的表。。

CREATE TABLE test1.mytest (
    id text,
    year text,
    time bigint,
    crtby text,
    data text,
    postid text,
    upby text,
    PRIMARY KEY ((id, year), time)
) WITH CLUSTERING ORDER BY (time DESC)

我想根据时间键对数据进行排序。

SELECT * FROM test1.mytest WHERE id ='b' ORDER BY time asc ALLOW FILTERING ;

当我尝试上述命令时,我得到

InvalidRequest: Error from server: code=2200 [Invalid query] message="ORDER BY is only supported when the partition key is restricted by an EQ or an IN."
envsm3lx

envsm3lx1#

错误清楚地描述了失败的原因。您的主键是id和year,然后按time键进行进一步的聚类。
Cassandra需要知道身份证和年份,只有这样才能按时下单。
由于在查询中并不总是使用分区键(id,year),要按时间排序,就必须使用物化视图。更多细节可以在这里找到。

相关问题