SQL查询的最大长度

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).

  • 2147483648 个字符为 2GiB。 (4认同)

Chr*_*ian 8

虽然查询字符串的长度没有(实际)限制,但 IN (x,y,z...) 子句的数量有限制:10000,可在 postgres.ini 文件中配置:

请参阅: http://grokbase.com/t/postgresql/pgsql-general/061mc7pxg6/what-is-the-maximum-length-of-an-in-abcd-list-in-postgresql

“在 7.4 及更早版本中,它取决于 max_expr_depth 设置。” ...“在 8.0 及更高版本中,max_expr_深度消失了,限制取决于 max_stack_深度。”


Wil*_*iam 5

为了避免查询过大,您可以将 IN (1, 2) 替换为 IN(从关注者中选择 follower_id,其中 follower_id = ?)或任何适当的查询,以从关注者的 id 中查找关注用户的 id。