cassandra - Cassandra,运行子查询的有效方法是什么
问题描述
我有一个巨大的员工表(大约 20 到 3000 万),我有大约 50,000 个员工 ID 可供选择。
最快的查询方法是什么?是不是这样的查询:
select * from employee_table where employeeid in (1,400,325 ....50000)
id 不一定按顺序排列;它们的顺序是随机的。
解决方案
在查询中使用 IN 子句时,协调节点的负载会增加,因为对于每个值(在您的情况下为员工 ID),它需要命中所需的节点(再次基于查询的 CL)并整理返回给客户端之前的结果。因此,如果您的 IN 子句有一些值,则使用 IN 是可以的。但是在您的情况下,如果您需要获取约 50K 员工 ID,我建议您select * from employee_table where employeeid = <your_employee_id>
为这 50K ID 并行触发,我还建议您在执行此操作时应该监控您的 cassandra 集群并确保这些并行查询不会导致高加载到您的集群上。(最后的陈述是基于我的个人经验:))
推荐阅读
- kubernetes - 是否有任何参数可以增加 Istio 虚拟服务清单中的默认 http 响应大小?
- python - 我需要使用 Python+Selenium 打开一个新选项卡并将 URL 粘贴到浏览器的 Url 行。由于某种原因不适用于 Keys
- flutter - Dart 中的全局变量:单例与静态
- windows - 如何通过 bash 在文件资源管理器中打开 Windows 启动文件夹?
- go - 无法在 Golang 的同一个包和文件夹中导入变量
- python-3.x - 如何在docker中为某些版本的python3安装pip
- php - 如何使用 curl 服务在邮件中附加存储在 laravel 存储中的文件或图像?
- python - Django - 返回一个主键列表及其引用的实体的另一个属性
- java - 具有特定密码的 PostgreSQL 随机错误
- events - 在 Hyperledger Sawtooth 浏览器客户端应用程序中订阅自定义事件