CQL检查记录是否存在

时间:2015-12-24 15:48:47

标签: cassandra cql

我正在学习Cassandra,以及CQL和SQL的差异,但我注意到没有办法检查Cassandra是否存在记录。目前,我最好的方法是使用

SELECT primary_keys FROM TABLE WHERE primary_keys = blah, 

并检查结果集是否为空。有没有更好的方法来做到这一点,或者我现在有正确的想法吗?

3 个答案:

答案 0 :(得分:10)

这是Cassandra检查行是否存在的常用方法。如果您关心的是行是否存在,您可能不想返回所有主键,因此您可以这样做:

SELECT count(*) FROM TABLE WHERE primary_keys = blah, 

如果该行存在,则返回1,如果不存在,则返回0.

答案 1 :(得分:10)

使用count将使其遍历所有匹配的行,以便能够对它们进行计数。但是你只需要检查一个,所以只需限制并返回任何内容。然后将结果的存在解释为true并将缺席解释为false。如,

SELECT primary_keys FROM TABLE WHERE primary_keys = blah LIMIT 1

答案 2 :(得分:1)

如果您使用主键来过滤行,则以上所有3个解决方案(包括您的解决方案)都可以。我不认为存在真正的差异。

但是如果你使用一般方法(例如索引列,分区键)来过滤行,你应该采用“限制1”的解决方案,这将避免无用的网络流量。

有一个相关的例子: The best way to check existence of filtered rows in Cassandra? by user-defined aggregate?