我有一个庞大的员工表(大约20到3000万),并且我有大约50,000个员工ID可供选择。
最快的查询方式是什么?是这样的查询吗:
select * from employee_table where employeeid in (1,400,325 ....50000)
id不一定是顺序的;它们是随机的。
答案 0 :(得分:1)
当在查询中使用IN子句时,协调器节点的负载会增加,因为对于每个值(在您的情况下为雇员id),它都需要命中所需的节点(同样基于查询的CL)并整理结果,然后再返回给客户。因此,如果您的IN子句有几个值,则可以使用IN。
但是在您的情况下,如果您需要获取约5万个员工ID,建议您为这5万个ID并行触发select * from employee_table where employeeid = <your_employee_id>
我还建议您在执行此操作时,应监视cassandra集群并确保这些并行查询不会对集群造成高负载。 (这是根据我的个人经验得出的声明:))