cassandra查询订单

时间:2016-06-07 08:02:36

标签: cassandra sql-order-by

我在cassandra有一张表,我只需要这两个查询:

SELECT * FROM comment WHERE post_id = ? ORDER BY date_posted DESC;
SELECT date_posted FROM comment WHERE post_id = ? ORDER BY date_posted DESC LIMIT 1;

我的表是:

CREATE TABLE comment
(
    id text,
    post_id text,
    username text,
    comment text,
    date_posted timestamp,
    PRIMARY KEY ((id), date_posted)
) WITH CLUSTERING ORDER BY (date_posted DESC);
CREATE INDEX comment_post_id ON comment (post_id);

我不明白为什么它不起作用,订单不起作用

2 个答案:

答案 0 :(得分:2)

你不能在CQL中做任何ORDER BY子句。 CQL WHERE子句只起作用 对于索引列,特别是主键中的列(分区键和聚类) 列)和具有二级索引的列。 在二级索引的情况下,查询从多个分区获取数据, 所以它不会作为排序顺序。 这就是Cassandra在上述情况下不允许OrderBy的原因。

您可以参考此链接了解更多详情

Breaking Down the CQL Where Clause

答案 1 :(得分:0)

您正在基于二级索引进行查询,并且不支持order by子句和二级索引。 如果这些是您将在评论表中进行的唯一2个查询,则post_id作为分区键将更有效。