sql - 在 MemSQL 中对 1+ 亿行查询 GROUP BY
问题描述
我有一个包含 13 亿行的表(MemSQL,列存储模式)。我需要在 3 个字段(id1、id2、文本)上查询 GROUP BY 并获取每个 3 元组的最新记录。该表通过安装在 EFS 文件夹上的管道填充。目前,它有大约 200k 个 2MB 的 csv 文件。
我需要帮助为这种情况编写优化查询,或者是否可以通过其他方式完成。
编辑:我无法在网上找到任何博客/帮助,他们中的大多数人都在谈论涉及创建额外表的解决方案,这对我来说现在是不可能的(在这种情况下内存使用量非常大)。
像下面这样的东西是行不通的,并且会关闭我的 5 节点集群:
select max(eventTime) from table1 group by id1, id2, field1
解决方案
这需要很长时间,因为它需要对数据库进行适当的设计。所以你必须选择分片键作为这三列(id1,id2,field1)。我建议对该查询使用列存储而不是行存储。
推荐阅读
- python - 有没有办法在 PyQt5 中动态更改背景颜色?
- laravel - Laravel 5.5 查询(子查询)pluck
- python - TypeError:尝试在python中进行子图绘制时,'tuple'对象不可调用
- cordova - 如何在用户处于屏幕锁定状态(离子)时触发事件?
- swagger - 如何在 APIGateway/Swagger 中将响应 Header Content-Type 设置为 application/xml
- pandas - 使用 sumifs 将列添加到 pandas DF
- linux - Yocto - 如何将空目录添加到文件树
- c++ - 在通知未知线程数的条件变量中避免错误唤醒
- r - 映射功能时出错/当我逐个手动运行它时工作正常;为什么?
- c# - 异步任务控制器未重定向到操作