如何在Cassandra中的查询中同时使用ORDER BY和IN?
我使用卡桑德拉3.0.5 我在一起使用如何在Cassandra中的查询中同时使用ORDER BY和IN?,cassandra,Cassandra,我使用卡桑德拉3.0.5 我在一起使用按和排序时遇到问题 模式: CREATE TABLE my_status.user_status_updates ( username text, id timeuuid, body text, PRIMARY KEY (username, id)) WITH CLUSTERING ORDER BY (id ASC) AND bloom_filter_fp_chance = 0.01 AND cach
按
和排序时遇到问题
模式:
CREATE TABLE my_status.user_status_updates (
username text,
id timeuuid,
body text,
PRIMARY KEY (username, id))
WITH CLUSTERING ORDER BY (id ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';
查询:
SELECT username, id, UNIXTIMESTAMPOF(id), body
FROM user_status_updates
WHERE username IN ('carol', 'dave')
ORDER BY id DESC
LIMIT 2;
InvalidRequest:code=2200[Invalid query]message=“无法在分区键上同时使用ORDER BY和IN限制对查询进行分页;您必须删除ORDER BY或IN and sort客户端,或禁用此查询的分页”
我相信我见过有人质疑这一点没有错误,所以我知道有一种方法可以解决这个问题。要使此查询正常工作,我需要做些什么?或者同时查询ORDER BY
和IN
是否效率低下?您已将群集键设置为ORDER ASC,但正在查询中请求它be ORDER DESC。这些意见相左,适得其反。如果将集群键更改为DESC,则查询中不需要orderby子句。如果对于其他查询,确实需要将集群键设为ASC,那么我建议使用第二个表,该表为DESC。根据查询所需内容设计表。希望有帮助
Adam同时使用IN和ORDER BY将需要使用cqlsh中的paging off
命令关闭分页。
cqlsh>PAGING OFF
就是答案。模式是什么样子的?因为您只要求返回2行,所以删除查询中的ORDER BY
子句,并在客户端进行排序,似乎是一个快速的解决方法。将此问题与“Learning Apache Cassandra Second Edition”一书中的确切查询联系起来。书中没有提到任何错误或必须关闭分页。我已经将这个问题提交给了关于packt publishing的勘误表。每次我用Java创建会话时,分页都是打开的。那么,有没有一种方法可以永久取消寻呼?对不起,我不知道怎么做。我最终决定不使用此方法。@user2782405在java中创建集群对象时,将QueryOptions设置为Cluster.builder().setQueryOptions(new QueryOptions().setFetchSize(500));谢谢@rishikesanvaradharajan请查看在同一查询中同时使用IN和ORDER BY时为什么需要关闭分页。