TIDB in 查询 最大可支持查询多少个值

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:
  • 【问题描述】:TIDB in 查询 最大可支持查询多少个值

您指的是 in 传入的常量值个数吧?正常来说 in 传入常量值个数跟 Mysql 一样也是应该不做限制的,但是 sql 长度会有限制,我们推荐传入 1000 以内个参数,传入更多值的话性能下降的比较厉害,传入更多的常量建议走子查询方式。

最大支持个数 有上限吗?

应该没有上限的,而且太大也没有实际的意义,您现在是遇到什么问题了吗?

目前问题是 有个 in 查询, 我是 使用 in (‘a’,‘b’,‘c’) 这种呢 还是 in (select id from xxx) 这种子查询, 相对于这个查询结果的数量可能是 0 - 200w , 在这几种数据级别下 应该怎么弄

是什么版本的 TiDB,如果 in 个数较少可以传入常量(且过滤性比较好),超过 1000 建议使用子查询 in (select id from xxx)。

如果是 2.1,TIDB 也可以通过 tidb_opt_insubquery_unfold 这个参数控制 in (select id from xxx) 的行为,这个是会话级别变量,默认值为 0 ,是做表关联处理的,当设置为 1 时,会当做 in (‘a’,‘b’,‘c’) 处理