Cassandra 中的 COUNT(*) 与 COUNT(1) 性能

Posted

技术标签:

【中文标题】Cassandra 中的 COUNT(*) 与 COUNT(1) 性能【英文标题】:COUNT(*) vs. COUNT(1) performance in Cassandra 【发布时间】:2018-03-12 13:54:06 【问题描述】:

根据docs:

使用 COUNT(*) 的 SELECT 表达式返回匹配查询的行数。或者,您可以使用 COUNT(1) 来获得相同的结果。

使用后一种方法是否有任何性能优势(如在 RDBMS 中)?

【问题讨论】:

【参考方案1】:

COUNT(*) 和 COUNT(1) 之间没有区别。 COUNT(1) 只是为了向后兼容我认为与一些旧的东西。无论内容如何,​​selectCountClause 都会返回空的 RawSelector 列表,但如果它是一个数字而不是 1 或不是 '*',则会引发异常。

如果担心性能,您可能希望避免一般计数。而是使用计数器或将计数保持在更高级别。

【讨论】:

嗨,克里斯,您能详细说明第二段吗?我在 Cassandra 有一张超过 10 亿张的桌子,我正在为此苦苦挣扎 ;-)

以上是关于Cassandra 中的 COUNT(*) 与 COUNT(1) 性能的主要内容,如果未能解决你的问题,请参考以下文章

cassandra 查询超时

Cassandra java 查询性能 count(*) 或 all().size()

检查cassandra中的子集

Cassandra 无法从表中查询行总和

Cassandra 中的单数据列与多列

Cassandra 中的 Gossip 参数在哪里设置?