根据这篇博客:
ORDER BY子句只能选择单个列,并且该列必须是复合主键中的第二列。即使对于主键中包含超过2个列组件的表也是如此。排序可以按升序或降序进行,默认为升序,并用ASC或DESC关键字指定。
复合主键
中的第二列表示第一个群集键。如果order by
列必须是复合主键
中的第二列,那么拥有多个集群键有什么好处?
需要记住的一点是,群集键列也是主键列。大多数情况下,您希望引入额外的键列(也碰巧是集群列),这并不是因为它们给您提供了更多的排序灵活性,而是为了能够存储更多唯一的行。
考虑到这一点,如果您确实引入了额外的集群键列,您将能够利用它们进行结果排序和范围查询。
考虑下表:
CREATE TABLE table4 (col1 int, col2 int, col3 int, col4 text, PRIMARY KEY (col1, col2, col3));
cqlsh:ks> SELECT * FROM table4 WHERE col1=1 AND col2=2 AND col3 > 1;
col1 | col2 | col3 | col4
------+------+------+------
1 | 2 | 2 | 122
1 | 2 | 3 | 123
(2 rows)
cqlsh:ks> SELECT * FROM table4 WHERE col1=3 ORDER BY col2 DESC, col3 DESC;
col1 | col2 | col3 | col4
------+------+------+------
3 | 3 | 3 | 333
3 | 3 | 2 | 332
3 | 3 | 1 | 331
3 | 2 | 3 | 323
3 | 2 | 2 | 322
3 | 2 | 1 | 321
3 | 1 | 3 | 313
3 | 1 | 2 | 312
3 | 1 | 1 | 311
(9 rows)
cqlsh:ks> SELECT * FROM table4 WHERE col1=3 ORDER BY col2 DESC, col3 ASC;
Bad Request: Unsupported order by relation
换句话说,查询引擎只能处理两种可能的顺序:自然的或反向的。若要指定需要哪一个,则永远不需要为ORDER BY指定多个列。因此,类似这样的查询将返回与上面的查询(#2)完全相同的结果集:
cqlsh:ks> SELECT * FROM table4 WHERE col1=3 ORDER BY col2 DESC;
col1 | col2 | col3 | col4
------+------+------+------
3 | 3 | 3 | 333
3 | 3 | 2 | 332
3 | 3 | 1 | 331
3 | 2 | 3 | 323
3 | 2 | 2 | 322
3 | 2 | 1 | 321
3 | 1 | 3 | 313
3 | 1 | 2 | 312
3 | 1 | 1 | 311
(9 rows)
参考文献: https://docs.datastax.com/en/cql/3.1/cql/ddl/ddl_compound_keys_c.html Cassandra中分区键、复合键和聚类键的区别?
我想将配置文件中的多个Cassandraendpoint提供给我的Java应用程序。 例如:cassandra主机:“主机1,主机2” 我尝试了< code > addContactPoints(host),但它不起作用。如果其中一个Cassandra节点关闭,我不希望我的应用程序关闭。
我正在使用ADFS 2.0开发OIOSAML。我需要对IdP响应进行签名和加密。以下是我对SAML请求和响应的签名和加密工作原理的理解: < li>SP使用自己的证书密钥(Key-1)对请求进行签名 < li>IdP使用SP的公钥(Key-1)验证请求 < li>IdP使用自己的证书密钥(Key-2)对响应进行签名 < li>IdP使用SP提供的证书密钥(Key-3)加密响应声明 < li>SP使
我试图在卡桑德拉的一小部分数据上运行一个火花工作。我手头有一个键的RDD(分区和集群列),我只想在这些键上运行我的作业。 我在BoundStatementBuilder上收到以下错误:19
问题内容: 页面上有多个页面不好吗?我有一个网站,在不同的时间加载不同的内容。我解雇了里面的那些部分回发功能,但是我一次在页面上有大约4或5。这是不好的做法吗?具体来说,会引起性能问题吗? 问题答案: 这个答案不再重要。 请查看下面的其他文章,以获得更多最新的jQuery $ .ready()影响。这个职位超过3岁。 请参阅:http://jsperf.com/docready/11 答案是不!您