首页 > 解决方案 > Cassandra,运行子查询的有效方法是什么

问题描述

我有一个巨大的员工表(大约 20 到 3000 万),我有大约 50,000 个员工 ID 可供选择。

最快的查询方法是什么?是不是这样的查询:

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

id 不一定按顺序排列;它们的顺序是随机的。

标签: cassandrabigdata

解决方案


在查询中使用 IN 子句时,协调节点的负载会增加,因为对于每个值(在您的情况下为员工 ID),它需要命中所需的节点(再次基于查询的 CL)并整理返回给客户端之前的结果。因此,如果您的 IN 子句有一些值,则使用 IN 是可以的。但是在您的情况下,如果您需要获取约 50K 员工 ID,我建议您select * from employee_table where employeeid = <your_employee_id>为这 50K ID 并行触发,我还建议您在执行此操作时应该监控您的 cassandra 集群并确保这些并行查询不会导致高加载到您的集群上。(最后的陈述是基于我的个人经验:))


推荐阅读