检索更多的数据,如果发现的数据是不够的Cassandra

um6iljoc  于 2021-06-10  发布在  Cassandra
关注(0)|答案(2)|浏览(251)

我的table看起来像这样,

CREATE TABLE IF NOT EXISTS names (
 firstname text,
 surname text,
 id text,
 PRIMARY KEY (firstname, surname)
)

假设我想返回至少10个名字。我愿意

select * from names where firstname = "something" and surname "something";

但如果这只返回6个人,我希望它能:

select * from names where firstname = "something" limit 4;

但我想避免两次返回同一行。可能只在一个查询中执行。这可能吗?

csga3l58

csga3l581#

您可以使用cqlsh的select“distinct”特性。您将获得分区的唯一值。更多详情请参阅以下文件rstanding:- https://docs.datastax.com/en/dse/5.1/cql/cql/cql\u参考/cql\u命令/cqlselect.html

mepcadol

mepcadol2#

例如,在java中,您可以依赖由驱动程序实现的分页。
在您的例子中,您可以执行查询,并使用 .setFetchSize 当对您需要的某个值执行特定的查询时—在本例中,驱动程序将读取大约指定的数字(或更少)作为第一页,如果您需要更多,则可以继续对结果进行迭代,并且驱动程序将获取下一页,直到您停止,或者不再有数据为止。
但要非常小心页面的值太低—如果分区中有大量数据,那么驱动程序将需要经常访问cassandra,这将影响性能。
p、 你不能有10条记录可以查询 where firstname = "something" and surname = "something" ,因为两列都包含完整的主键,并且给定的主键只能有一条记录。你可以用 where firstname = "something" and surname >= "something" 获取以给定姓氏开始的数据。

相关问题