select~where in(大数组)中的数组大小是否有限制?

ewm0tg9j  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(382)

我有一个可怕的查询,我正在使用与Cassandra,并想知道有多少项目可以在数据库中 WHERE IN (array) 条款?

SELECT COUNT(*)
FROM my_keyspace.my_table
WHERE uuid IN (
  94e60226-da89-44ab-8255-716e1a2e9e98,
  92c3e7b1-d5bd-45f4-ae1d-b5e2033bb5c2,
  3b3f4335-e11c-4695-805b-453ffdfb664d,
  9134fa1e-a199-4cd9-b45c-0243c6e7c0b2,
  efa99981-ded0-4462-ba2e-73f7e08467ab,
  ...
);

我已经成功地查询了多达1000个项目,但是我已经学会了进一步扩展它,并且已经将我的查询分解为多个批次。有人知道有没有上限吗?
我在Cassandra的文件里什么也没找到。

snvhrwxg

snvhrwxg1#

我不知道in子句中的项目数是硬限制还是软限制,我认为没有。
但一般来说,选择。。。从多个分区获取数据时伸缩性不好,因为每个分区可能位于不同的节点中,它会创建许多节点间通信,因此在合并结果时也会对协调节点施加压力。
它被归类为反模式,以下是一些指向文档的链接:
https://docs.datastax.com/en/ddaccql/doc/cql/cql_reference/cql_commands/cqlselect.html#cqlselect__selectinnot
一篇关于这个主题的有趣的文章:https://lostechies.com/ryansvihla/2014/09/22/cassandra-query-patterns-not-using-the-in-query-for-multiple-partitions/
我希望这有帮助!

相关问题