Presto数据库支持的IN List列表参数值数量上限是多少?
Presto IN List参数值数量上限说明
Presto没有像Oracle那样固定1000的硬编码IN List长度限制,也不像MySQL无显式限制,它的上限受集群配置控制,具体规则如下:
- 解析层有明确的参数限制:配置项
parser.max-in-list-size控制解析阶段允许的IN List最大长度,默认值为10000,如果你的IN参数数量超过这个值,查询会在语法解析阶段直接报错。 - 执行层受内存配置限制:如果IN List长度远超默认值,即使你调大了
parser.max-in-list-size,也要注意查询占用内存不要超过集群配置的query.max-memory(单查询总内存上限)、query.max-memory-per-node(单节点单查询内存上限),否则会触发内存不足错误导致查询终止。
实际使用建议:如果需要用到超长IN List,更推荐把参数值存入临时表,用关联查询代替IN操作,性能会远好于直接写超长IN语句,也能避免解析、执行阶段的各种异常。
内容的提问来源于stack exchange,提问作者JOHN
相关产品推荐
相关产品推荐

