我在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);
我不明白为什么它不起作用,订单不起作用
答案 0 :(得分:2)
你不能在CQL中做任何ORDER BY子句。 CQL WHERE子句只起作用 对于索引列,特别是主键中的列(分区键和聚类) 列)和具有二级索引的列。 在二级索引的情况下,查询从多个分区获取数据, 所以它不会作为排序顺序。 这就是Cassandra在上述情况下不允许OrderBy的原因。
您可以参考此链接了解更多详情
答案 1 :(得分:0)
您正在基于二级索引进行查询,并且不支持order by子句和二级索引。
如果这些是您将在评论表中进行的唯一2个查询,则post_id
作为分区键将更有效。