在类型转换中需要有关SQL Server中执行计划的帮助

问题描述

我在执行计划中得到的警告不足。请提供一些有关如何解决此错误的建议。

表达式中的类型转换(CONVERT(int,STRING_SPLIT。[值],0))可能会影响查询计划选择中的“ CardinalityEstimate”

enter image description here

在下面的SQL语句中看到警告

app:backgroundTint="@null"

#tblWorkQueueDocuemnt:创建表的语句。 创建表#tblWorkQueueDocuemnt(GroupID INT,TotalCount INT)

解决方法

基本上,警告消息指示由于类型转换,无法在派生表中使用索引。我认为这在这里并不重要,因为派生表本身是基于解析后的文字字符串的-因此,就不会有索引。

请注意:您是否真的需要将此值作为文字CSV字符串传递?用values()构建适当的派生表比较简单,例如:

select te.value as groupid,coalesce(tm.totalcount,0) as groupcount
from (values (1),(2),(3),(4)) as te(groupid)
left join #tblworkqueuedocuemnt tm on tm.tm.groupid = te.value

顺便说一句,这可以避免出现警告(不需要转换,因为以适当的数据类型开头的值已给出)。但是,再次,我认为您不应该担心该警告。

,

每当进行隐式转换时,这都是一件老事。

在对字段进行隐式转换的情况下,它可能无法使用索引。类似于您对它进行了明确的CAST或CONVERT操作。

如果运行正常且没有问题,请忽略它。

例如参见https://www.brentozar.com/archive/2018/10/we-need-to-talk-about-the-warnings-in-your-query-plans/

在您的情况下,可以根据需要将string_split之后的值显式转换为int。从技术上讲它更干净,但可能根本不会提高性能。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...