Mer*_*uda 2 sql-server execution-plan type-conversion sql-server-2017
我已经计算出所有隐式转换,但我仍然在计划中看到它的提及。我已附上该计划,任何建议都会有所帮助。
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
Run Code Online (Sandbox Code Playgroud)
Eri*_*ing 10
看起来,当您填充#runIds
表格时——我只是在这里进行了一个疯狂的猜测——您正在使用一个字符串拆分器函数,该函数将值输出为NVARCHAR(MAX)
.
您可以尝试转换那里的值以摆脱隐式转换警告。
另一种可能的改进是将NonClustereIndex-Cardholder
RiskProductionStatistics 上的索引更改model_set_name
为键列和model_name, run_id, value
包含列。这将解决密钥查找问题。
您可能还想检查model_name
. 它出现在 Filter 运算符中,我担心它是 MAX 数据类型,这可能会阻止谓词被下推。
由于这是一个估计的计划,并且您没有包含有关查询的任何指标,因此很难说这些更改会有多少改进。