集群顺序不适用于复合分区键
Clustering order does not work with compound partition key
具有以下table定义:
CREATE TABLE device_by_create_date (
year int,
comm_nr text,
created_at timestamp,
PRIMARY KEY ((year, comm_nr), created_at)
) WITH CLUSTERING ORDER BY (created_at DESC)
Comm_nr
是唯一标识符。
我希望看到按 created_at
列排序的数据,但在我添加数据时并非如此。
示例条目:
Table CQL:
如何发出 select * from table;
查询,其中 return 数据按 created_at
行排序?
TLDR: 您需要创建一个新的 table.
您的分区键是 (year, comm_nr)
。您已订购 created_at 键,但它是在该分区键内订购的。 SELECT * FROM table WHERE year=x AND comm_nr=y;
将按 created_at 排序的查询。
此外,如果您的密钥不是 (year, comm_nr), created_at
而不是 year, comm_r, created_at
,即使您的创建 table 语法仅将 created_at 指定为具有聚类顺序,它将是创建为 WITH CLUSTERING ORDER BY (comm_nr DESC, created_at DESC)
。数据在 SSTables 中从左到右按键排序。
以真正的 nosql 方式执行此操作的方法是创建一个单独的 table,而不是您的密钥 year, created_at, comm_nr
。您可以在创建用户时写信给两者,但是如果您需要谁首先创建他们的帐户的答案,您可以改为查询新的 table.
具有以下table定义:
CREATE TABLE device_by_create_date (
year int,
comm_nr text,
created_at timestamp,
PRIMARY KEY ((year, comm_nr), created_at)
) WITH CLUSTERING ORDER BY (created_at DESC)
Comm_nr
是唯一标识符。
我希望看到按 created_at
列排序的数据,但在我添加数据时并非如此。
示例条目:
Table CQL:
如何发出 select * from table;
查询,其中 return 数据按 created_at
行排序?
TLDR: 您需要创建一个新的 table.
您的分区键是 (year, comm_nr)
。您已订购 created_at 键,但它是在该分区键内订购的。 SELECT * FROM table WHERE year=x AND comm_nr=y;
将按 created_at 排序的查询。
此外,如果您的密钥不是 (year, comm_nr), created_at
而不是 year, comm_r, created_at
,即使您的创建 table 语法仅将 created_at 指定为具有聚类顺序,它将是创建为 WITH CLUSTERING ORDER BY (comm_nr DESC, created_at DESC)
。数据在 SSTables 中从左到右按键排序。
以真正的 nosql 方式执行此操作的方法是创建一个单独的 table,而不是您的密钥 year, created_at, comm_nr
。您可以在创建用户时写信给两者,但是如果您需要谁首先创建他们的帐户的答案,您可以改为查询新的 table.