Cassandra 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; 显示的结果似乎总是按“年龄”排序,然后按升序自动按“分数”排序,而不考虑输入数据的顺序(正如预期的那样,返回行不按分区键“名称”排序)。我有以下问题:

如果我使用cql定义这样的表:

CREATE TABLE scores (
 name text,
 age int,
 score int,
 date timestamp,
 PRIMARY KEY (name, age, score)
);
并在cqlsh中进行如下选择:

select * from mykeyspace.scores;
显示的结果似乎总是按“年龄”排序,然后按升序自动按“分数”排序,而不考虑输入数据的顺序(正如预期的那样,返回行不按分区键“名称”排序)。我有以下问题:

  • 是否选择
    按聚类键自动对返回行排序
  • 如果,在使用
    选择
    时使用
    排序子句的目的是什么
  • 如果no,由于cql不允许在
    select*
    上使用
    ORDER by
    ,如何获取返回行以按集群键排序

  • 您的聚类列定义了顺序(在您的案例中,
    age
    then
    score

    在给定的物理节点上,给定分区键的行以集群列所诱导的顺序存储,这使得以该集群顺序检索行特别有效(请参见SELECT)

    ORDER BY选项允许选择返回结果的顺序。它将列名列表以及列的顺序作为参数(ASC表示升序,DESC表示后代,省略与ASC等效的顺序)。目前可能的排序是有限的(这取决于表的聚类顺序):

    • 如果定义的表没有任何特定的聚类顺序,那么允许的顺序是由聚类列诱导的顺序,与该顺序相反
    • 否则,允许的顺序是集群顺序选项的顺序和相反的顺序

    米哈伊尔,我已经看过那些文件了。他们没有真正回答我的问题。考虑到我如何定义我的表,排序是自动的吗?如果是,为什么我仍然需要SELECT语句中的ORDERBY子句(如果我需要按降序排序,我想我仍然需要它)?是的,排序是“自动”的。您的数据以排序顺序进行物理存储,排序顺序由我们的聚类列或y聚类顺序(如果存在)定义。ORDER BY允许您在ASC和DESC之间切换。因此,由于数据已经自动按升序排序,因此实际上没有理由在SELECT中使用order BY,除非我想按降序排序-正确吗?数据是按您定义的顺序存储的,使用order BY只能颠倒顺序