sql server2008 批量刪除發生:查詢處理器用盡了內部資源,無法生成查詢計劃。這種情況很少出現,只有在查詢極其複雜或引用了大量表或分區時纔會出現。請簡化查詢

       昨晚跑了一個程序:批量刪除一些數據,我sql語句寫的有點爛,在where條件時候用的是   IN 。所以最後發生異常:查詢處理器用盡了內部資源,無法生成查詢計劃。這種情況很少出現,只有在查詢極其複雜或引用了大量表或分區時纔會出現。請簡化查詢。

      百度了下,可能是在刪除時候先去查詢,where後面的條件太多了,導致異常。這個時候應該優化sql語句,如果我們做的是表關聯的查詢,可能因爲表太多或者表數據量大出現這種問題,這個時候我們要先細化,查詢,放到臨時表中,再union 這些臨時表,舉個例子:如果要關聯1500張表,你可以先500一張臨時表,再三個臨時表union一張表,具體怎麼細分可以自己定。

    在這裏我可以選擇單條插入,但是如果我一次性刪除一萬行數據,那我不開的事物太多了,也會導致數據庫很慢。

     可以寫多條delete語句,一起提交,這個時候會更快些,因爲事物只有一個。

 注意:這裏如果你使用exists 可能比in好些,但是我沒有試過,在sql server 數據庫中最好用exists。

查詢處理器用盡了內部資源,無法生成查詢計劃。這種情況很少出現,只有在查詢極其複雜或引用了大量表或分區時纔會出現。請簡化查詢。如果您認爲該消息的出現純屬錯誤,請與客戶支持服務部門聯繫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章