Cassandra,运行子查询的有效方法是啥
Posted
技术标签:
【中文标题】Cassandra,运行子查询的有效方法是啥【英文标题】:Cassandra, what is the efficient way to run subqueryCassandra,运行子查询的有效方法是什么 【发布时间】:2019-04-05 12:10:47 【问题描述】:我有一个巨大的员工表(大约 20 到 3000 万),并且我有大约 50,000 个员工 ID 可供选择。
最快的查询方式是什么?是不是这样的查询:
select * from employee_table where employeeid in (1,400,325 ....50000)
id 不一定按顺序排列;它们的顺序是随机的。
【问题讨论】:
能否请您提供有关问题的更多信息。如果您有 5000 个 id,那么您可以根据分区键选择数据。 【参考方案1】:在查询中使用 IN 子句时,协调节点的负载会增加,因为对于每个值(在您的情况下为员工 ID),它都需要命中所需的节点(再次基于查询的 CL)并在返回给客户之前整理结果。因此,如果您的 IN 子句有一些值,则使用 IN 是可以的。
但是在您的情况下,如果您需要获取约 50K 员工 ID,我建议您为这 50K ID 并行解雇 select * from employee_table where employeeid = <your_employee_id>
我还建议,当你这样做时,你应该监控你的 cassandra 集群并确保这些并行查询不会导致你的集群负载过高。 (这最后的陈述是基于我的个人经验:))
【讨论】:
以上是关于Cassandra,运行子查询的有效方法是啥的主要内容,如果未能解决你的问题,请参考以下文章