Pra*_*man 10 ruby sql postgresql activerecord
SELECT f.*
FROM feeds f,
user_feeds uf
WHERE (f.id=uf.feed_id and uf.user_id in (1,2,5,6,23,45))
ORDER BY created_at DESC
这是用于构建用户的订阅源的查询.我对此查询的问题是"uf.user_id in()"随着他跟随的用户数量的增加而增加.
SQL查询允许的最大长度是多少?有没有更好的方法来实现我的上述查询?
注意:我使用的是ActiveRecord.我正在使用Postgres.
Pet*_*aut 19
PostgreSQL可以处理的查询的最大长度是2147483648个字符(带符号的4字节整数;请参阅参考资料src/include/lib/stringinfo.h).
虽然查询字符串的长度没有(实际)限制,但 IN (x,y,z...) 子句的数量有限制:10000,可在 postgres.ini 文件中配置:
“在 7.4 及更早版本中,它取决于 max_expr_depth 设置。” ...“在 8.0 及更高版本中,max_expr_深度消失了,限制取决于 max_stack_深度。”
为了避免查询过大,您可以将 IN (1, 2) 替换为 IN(从关注者中选择 follower_id,其中 follower_id = ?)或任何适当的查询,以从关注者的 id 中查找关注用户的 id。
| 归档时间: |
|
| 查看次数: |
6092 次 |
| 最近记录: |