SQL Server IN(最大值,参数,允许,在,这里)?

Har*_*rry 2 sql database sql-server

我可以传递给SQL Server IN()函数多少个参数?

SELECT * FROM TABLE where ID IN ( 1,2,3,4,5,..,.,....)
Run Code Online (Sandbox Code Playgroud)

小智 8

此限制为65,535.

请参阅此处的原因部分.


Mag*_*tLU 6

根据文件 - "数千".

  • 如果"成千上万"可能导致错误,"数千 - 1"应该没问题,并且由于"数千 - 1"几乎总是"数千",查询应该可以正常使用"数千"值:-) (4认同)
  • 文档说*不*使用"数千",因为这可能导致异常:) (2认同)

aF.*_*aF. 6

在一个IN clause可以消耗资源和返回错误8623或8632中包含非常大量的值(数千).要解决此问题,请将项目存储在表中的IN列表中.

错误8623:

查询处理器耗尽了内部资源,无法生成查询计划.这是一种罕见的事件,仅适用于引用大量表或分区的极其复杂的查询或查询.请简化查询.如果您认为错误地收到了此消息,请与客户支持服务联系以获取更多信息.

错误8632:

内部错误:已达到表达式服务限制.请在查询中查找可能复杂的表达式,并尝试简化它们.