Sql-Server
我怎樣才能使這個執行計劃更有效率?
我已經計算出所有隱式轉換,但我仍然在計劃中看到提到它。我已附上該計劃,任何建議都會有所幫助。
select cardholder_index, sum(value) as [RxCost] into #rxCosts from RiskPredictionStatistics with (nolock) where model_name = 'prescription_cost_12_months' and model_set_name = 'rx_updated' and run_id in (select value from #runIds) and exists (select 1 from StringContainsHelper with (nolock) where IntValue = cardholder_index and ReferenceId = @stringContainsHelperRefId) group by cardholder_index
看起來當你填充
#runIds
表格時——我只是在這裡猜測一下——你正在使用一個字元串拆分器函式,該函式將值輸出為NVARCHAR(MAX)
.您可以嘗試轉換那裡的值以消除隱式轉換警告。
另一個可能的改進是將
NonClustereIndex-Cardholder
RiskProductionStatistics 上的索引更改model_set_name
為鍵列和model_name, run_id, value
包含列。這將解決密鑰查找問題。您可能還想檢查
model_name
. 它出現在 Filter 運算符中,我擔心它是 MAX 數據類型,這可能會阻止謂詞被 push down。由於這是一個估計的計劃,並且您沒有包含有關查詢的任何指標,因此很難說這些更改會帶來多少改進。