【发布时间】:2018-10-09 01:12:36
【问题描述】:
我使用 go 和 gorm 编写了一个 API,它在我们的数据库上运行计算并返回结果。
在使用聚合时,我刚刚达到了 IN 条件的参数限制。示例查询:
SELECT SUM(total_amount) from Table where user_id in(...70k parameters) group by user_id
我当前的一个边缘案例有 > 65535 个用户 ID,因此我的 Postgres 客户端抛出错误:
got 66037 parameters but PostgreSQL only supports 65535 parameters
我不确定解决此问题的最佳方法是什么。一个可以处理这种边缘情况的大量参数,同时不会影响我的典型用例。我是否将 id 分块并遍历将其存储在内存中的多个查询,直到获得所需的所有数据?使用ANY(VALUES)...
显然,从查询中我对 Postgres 的了解非常有限,因此非常感谢任何帮助。
【问题讨论】:
-
您使用所需的 user_id 创建一个表并进行左连接
标签: sql postgresql go go-gorm sql-in