Есть ли ограничение на размер массива в SELECT ~ WHERE IN (огромный_array)? - PullRequest
0 голосов
/ 24 января 2020

У меня ужасный запрос, который я использую с 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 элементов, но я Я настаиваю на том, чтобы масштабировать его дальше, и разбивал мои запросы на партии. Кто-нибудь знает, есть ли верхний предел?

Я ничего не нашел в Документах Кассандры .

1 Ответ

1 голос
/ 25 января 2020

Я не знаю, есть ли жесткое или мягкое ограничение на количество элементов в предложении IN, я не думаю, что оно есть.

Но, как правило, выбор 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/

Надеюсь, это поможет!

...