Cassandra cql选择排序
如果我使用cql定义这样的表:Cassandra cql选择排序,cassandra,cql,cqlsh,Cassandra,Cql,Cqlsh,如果我使用cql定义这样的表: CREATE TABLE scores ( name text, age int, score int, date timestamp, PRIMARY KEY (name, age, score) ); 并在cqlsh中进行如下选择: select * from mykeyspace.scores; 显示的结果似乎总是按“年龄”排序,然后按升序自动按“分数”排序,而不考虑输入数据的顺序(正如预期的那样,返回行不按分区键“名称”排序)。我有以下问题:
CREATE TABLE scores (
name text,
age int,
score int,
date timestamp,
PRIMARY KEY (name, age, score)
);
并在cqlsh中进行如下选择:
select * from mykeyspace.scores;
显示的结果似乎总是按“年龄”排序,然后按升序自动按“分数”排序,而不考虑输入数据的顺序(正如预期的那样,返回行不按分区键“名称”排序)。我有以下问题:
是否选择
按聚类键自动对返回行排序选择
时使用按
排序子句的目的是什么select*
上使用ORDER by
,如何获取返回行以按集群键排序您的聚类列定义了顺序(在您的案例中,
age
thenscore
)
在给定的物理节点上,给定分区键的行以集群列所诱导的顺序存储,这使得以该集群顺序检索行特别有效(请参见SELECT)
ORDER BY选项允许选择返回结果的顺序。它将列名列表以及列的顺序作为参数(ASC表示升序,DESC表示后代,省略与ASC等效的顺序)。目前可能的排序是有限的(这取决于表的聚类顺序):
- 如果定义的表没有任何特定的聚类顺序,那么允许的顺序是由聚类列诱导的顺序,与该顺序相反
- 否则,允许的顺序是集群顺序选项的顺序和相反的顺序
米哈伊尔,我已经看过那些文件了。他们没有真正回答我的问题。考虑到我如何定义我的表,排序是自动的吗?如果是,为什么我仍然需要SELECT语句中的ORDERBY子句(如果我需要按降序排序,我想我仍然需要它)?是的,排序是“自动”的。您的数据以排序顺序进行物理存储,排序顺序由我们的聚类列或y聚类顺序(如果存在)定义。ORDER BY允许您在ASC和DESC之间切换。因此,由于数据已经自动按升序排序,因此实际上没有理由在SELECT中使用order BY,除非我想按降序排序-正确吗?数据是按您定义的顺序存储的,使用order BY只能颠倒顺序