Sql-Server
為什麼 SQL Server 會停止適當地排除分區?
我有一個事實表,它將在我們早上處理期間以適當的計劃執行。偶爾,晚一點去查詢,它會有一個很奇怪的計劃。
在查詢按日期分區的表時,您通常會看到如下所示的搜尋謂詞:
但是由於某種原因,它變成了這樣:
是的,我知道上面顯示了兩個不同的表格。我從一個類似配置的表中提取了一個很好的例子,它適當地顯示了我期望的搜尋謂詞。
這兩個都是聚集索引搜尋運算符。更新統計數據似乎沒有幫助,但Ola 的維護腳本的某些部分似乎每天早上都會修復它。
有人見過這個嗎?有關如何恢復良好計劃的任何提示?
在第二個執行計劃中,seek 謂詞中有一個
CONVERT_IMPLICIT
函式。這意味著輸入了錯誤的數據類型,SQL Server 必須將數據類型轉換為其他類型。在這種情況下,它需要一個DATE
數據類型和其他的東西而不是DATE
傳入……很可能是一個(VAR)CHAR
或N(VAR)CHAR
值。修復方法是在送出查詢之前顯式轉換/轉換值,或者修復程式碼以使用正確的數據類型。以下是有關此問題的更多資源: