sql server查询处理器耗尽了内部资源

Sof*_*ion 6 t-sql sql-server

查询:

update mytable 
    set mycol = null
    where id in (
        583048,
        583049,
        ... (50000 more)
)
Run Code Online (Sandbox Code Playgroud)

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

我的查询非常简单,我应该怎么写它才能正常工作?

Mar*_*ith 6

将值列表插入#temp表中,然后使用in它.

正如在这个答案中所解释的那样,大量的IN值会导致它在扩展到堆栈时耗尽OR

另请参阅相关的连接项

  • 将 50000 个值放入 CSV 文件中,并使用 BULK INSERT 将数据插入表中。然后你就可以使用它了。 (2认同)