Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Limitação da cláusula IN no Sql Server


Sim, há um limite, mas o MSDN especifica apenas que está "na casa dos milhares":

Incluir um número extremamente grande de valores (muitos milhares) em uma cláusula IN pode consumir recursos e retornar erros 8623 ou 8632. Para contornar esse problema, armazene os itens na lista IN em uma tabela.

Observando esses erros em detalhes, vemos que esse limite não é específico para IN mas se aplica à complexidade da consulta em geral:

Erro 8623:

O processador de consulta ficou sem recursos internos e não pôde produzir um plano de consulta. Este é um evento raro e esperado apenas para consultas extremamente complexas ou consultas que fazem referência a um número muito grande de tabelas ou partições. Por favor, simplifique a consulta. Se você acredita que recebeu esta mensagem por engano, entre em contato com o Atendimento ao cliente para obter mais informações.

Erro 8632:

Erro interno:um limite de serviços de expressão foi atingido. Procure expressões potencialmente complexas em sua consulta e tente simplificá-las.