Sql-Server

為什麼 SQL Server 會停止適當地排除分區?

  • August 4, 2016

我有一個事實表,它將在我們早上處理期間以適當的計劃執行。偶爾,晚一點去查詢,它會有一個很奇怪的計劃。

在查詢按日期分區的表時,您通常會看到如下所示的搜尋謂詞:

好查詢

但是由於某種原因,它變成了這樣:

在此處輸入圖像描述

是的,我知道上面顯示了兩個不同的表格。我從一個類似配置的表中提取了一個很好的例子,它適當地顯示了我期望的搜尋謂詞。

這兩個都是聚集索引搜尋運算符。更新統計數據似乎沒有幫助,但Ola 的維護腳本的某些部分似乎每天早上都會​​修復它。

有人見過這個嗎?有關如何恢復良好計劃的任何提示?

在第二個執行計劃中,seek 謂詞中有一個CONVERT_IMPLICIT函式。這意味著輸入了錯誤的數據類型,SQL Server 必須將數據類型轉換為其他類型。在這種情況下,它需要一個DATE數據類型和其他的東西而不是DATE傳入……很可能是一個(VAR)CHARN(VAR)CHAR值。修復方法是在送出查詢之前顯式轉換/轉換值,或者修復程式碼以使用正確的數據類型。

以下是有關此問題的更多資源:

引用自:https://dba.stackexchange.com/questions/145873