如何解决在类型转换中需要有关SQL Server中执行计划的帮助
我在执行计划中得到的警告不足。请提供一些有关如何解决此错误的建议。
表达式中的类型转换(CONVERT(int,STRING_SPLIT。[值],0))可能会影响查询计划选择中的“ CardinalityEstimate”
在下面的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。从技术上讲它更干净,但可能根本不会提高性能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。