Кассандра, какой эффективный способ запустить подзапрос - PullRequest
1 голос
/ 05 апреля 2019

У меня огромная таблица сотрудников (от 20 до 30 миллионов), и у меня есть около 50 000 идентификаторов сотрудников для выбора из этой таблицы.

Какой самый быстрый способ запроса?Это запрос вроде этого:

select * from employee_table where employeeid in (1,400,325 ....50000)

Идентификаторы не обязательно в последовательном порядке;они в случайном порядке.

1 Ответ

1 голос
/ 05 апреля 2019

Когда в запросе используется предложение IN, нагрузка для узла-координатора увеличивается, потому что для каждого значения (в вашем случае идентификатор сотрудника) ему необходимо попасть в требуемые узлы (снова на основе CL вашего запроса) и сопоставить результаты, прежде чем вернуться к клиенту. Следовательно, если ваше предложение IN имеет несколько значений, используйте IN, это нормально. Но в вашем случае, если вам нужно получить ~ 50K идентификаторов сотрудников, я бы посоветовал вам запустить select * from employee_table where employeeid = <your_employee_id> параллельно для этих 50K идентификаторов. Я также хотел бы предложить, чтобы при этом вы следили за своим кластером cassandra и чтобы эти параллельные запросы не вызывали высокую нагрузку на ваш кластер. (Последнее утверждение основано на моем личном опыте:))

...