首页 > 解决方案 > “仅当分区键受 EQ 或 IN 限制时,才支持 ORDER BY。” 卡桑德拉

问题描述

我已经像这样创建了我的桌子..

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."

标签: database-designcassandra

解决方案


该错误清楚地描述了失败的原因。您的主键是idyear,然后按时间键进行进一步的聚类。

Cassandra 需要知道idyear才能按时下订单。

由于您并不总是在查询中使用分区键(id、年份),因此要按时间排序,您将不得不使用物化视图。更多细节可以在这里找到。


推荐阅读