gpt4 book ai didi

cassandra,通过非主键选择

转载 作者:行者123 更新时间:2023-12-02 21:31:48 24 4
gpt4 key购买 nike

我是 cassandra 新手,遇到了一个问题。我创建了一个键空间 demodb 和一个表 users。该表有 3 列:id(int 和主键)、firstname(varchar)、name(varchar)。这个请求给我带来了好的结果:

SELECT * FROM demodb.users WHERE id = 3;

但是这个:

SELECT * FROM demodb.users WHERE firstname = 'francois';

不起作用,我收到以下错误消息:

InvalidRequest: code=2200 [Invalid query] message="No secondary indexes on the restricted columns support the provided operators: "

此请求也不起作用:

SELECT * FROM users WHERE firstname  = 'francois'  ORDER BY id DESC LIMIT 5;
InvalidRequest: code=2200 [Invalid query] message="ORDER BY with 2ndary indexes is not supported."

提前致谢。

最佳答案

This request also doesn't work:

那是因为您误解了 Cassandra 中排序顺序的工作原理。不要在 firstname 上使用二级索引,而是专门为此查询创建一个表,如下所示:

CREATE TABLE usersByFirstName (
id int,
firstname text,
lastname text,
PRIMARY KEY (firstname,id));

此查询现在应该可以工作:

SELECT * FROM usersByFirstName WHERE firstname='francois'
ORDER BY id DESC LIMIT 5;

请注意,我已在 firstnameid 上创建了一个复合主键。这将按 firstname 对数据进行分区(允许您通过它进行查询),同时还按 id 对数据进行集群。默认情况下,您的数据将按 id 按升序排列。要改变此行为,您可以在表创建语句中指定CLUSTERING ORDER:

WITH CLUSTERING ORDER BY (id DESC)

...然后您甚至不需要 ORDER BY 子句。

我最近写了一篇关于 Cassandra 中集群顺序如何工作的文章 ( We Shall Have Order )。它解释了这一点,并涵盖了一些订购策略。

关于cassandra,通过非主键选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29793438/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com