update mytable
set mycol = null
where id in (
583048,
583049,
... (50000 more)
)
消息: 查詢處理器用盡了內部資源,無法生成查詢計劃。這是一個罕見的事件,並且只能用於引用大量表或分區的極其複雜的查詢或查詢。請簡化查詢。如果您認爲您錯誤地收到了此消息,請聯繫客戶支持服務以獲取更多信息。
我的查詢很簡單, 我應該怎麼寫才能正常工作?
update mytable
set mycol = null
where id in (
583048,
583049,
... (50000 more)
)
消息: 查詢處理器用盡了內部資源,無法生成查詢計劃。這是一個罕見的事件,並且只能用於引用大量表或分區的極其複雜的查詢或查詢。請簡化查詢。如果您認爲您錯誤地收到了此消息,請聯繫客戶支持服務以獲取更多信息。
我的查詢很簡單, 我應該怎麼寫才能正常工作?
將值列表插入到#temp
表中,然後在該表上使用in
。
作爲解釋in this answer大量IN
值可能會導致它用完棧,因爲他們得到擴大到OR
我有一個非常類似的問題。對我來說,這是一個簡單的修復:嘗試將AsParallel()添加到查詢中,就在ToList()或Count()之前。該選項將查詢分開並單獨執行,並加入結果。誰知道你也可能獲得性能提升。 –