我看到了官方文档:https://docs.datastax.com/en/cql/3.1/cql/cql_using/useColumnsSort.html
可以使用“ SELECT * FROM user,其中userID输入(102,104)按年龄ASC排序;”
如何定义用户表或实例化视图?
必须放弃吗?
这是我当前的视图:
CREATE MATERIALIZED VIEW navigation_by_id_time AS
SELECT * FROM navigation
WHERE competition_id IS NOT NULL AND event_type_id IS NOT NULL AND event_id IS NOT NULL AND market_id IS NOT NULL AND market_start_time IS NOT NULL AND market_suspend_time IS NOT NULL
PRIMARY KEY (event_type_id, market_start_time, event_id, market_id, market_suspend_time);
此查询无效
select * from navigation_by_id_time where event_type_id in(1,2,3) order by market_start_time;
message =“不能对分区键上有ORDER BY和IN限制的页面进行分页;您必须删除ORDER BY或IN并对客户端进行排序,或者禁用此查询的分页”
谢谢
答案 0 :(得分:1)
使用bth IN和ORDER BY时,Cassandra不支持分页。在datastax文档-Retrieval using IN keyword中也有说明。
此外,如果您检查code,还将获得更多说明。
该检查已添加到JIRA-6722中,其行为说明如下:
然而,在实践中并不是那么容易。如果查询整页 每个分区中的一个,并且IN中有很多分区,您将加载 大量的数据存储,在很大程度上击败了分页的目标。 如果查询少于每个分区的页面大小,则表示 现在可能需要重新查询某些分区,具体取决于 在第一页上合并排序结果。
结论是:您需要在cqlsh中关闭paging。如果您使用的是Java客户端,this可能会有所帮助(还介绍了更多内容)。