【问题标题】:Cassandra, what is the efficient way to run subqueryCassandra,运行子查询的有效方法是什么
【发布时间】:2023-03-29 15:45:02
【问题描述】:

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

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

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

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

【问题讨论】:

  • 能否请您提供有关问题的更多信息。如果您有 5000 个 id,那么您可以根据分区键选择数据。

标签: cassandra bigdata


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2011-02-19
    • 2020-06-23
    • 1970-01-01
    相关资源
    最近更新 更多