Mik*_*son 19 sql-server execution-plan type-conversion sql-server-2012 cardinality-estimates
create table T(ID int identity primary key)
insert into T default values
insert into T default values
go
select cast(ID as varchar(10)) as ID
from T
where ID = 1
Run Code Online (Sandbox Code Playgroud)
上面的查询在查询计划中有一个警告。
<Warnings>
<PlanAffectingConvert ConvertIssue="Cardinality Estimate" Expression="CONVERT(varchar(10),[xx].[dbo].[T].[ID],0)" />
</Warnings>
Run Code Online (Sandbox Code Playgroud)
为什么它有警告?
字段列表中的强制转换如何影响基数估计?
Mik*_*son 12
此警告是 SQL Server 2012 的新增内容。
从 SQL2012 中新的“表达式中的类型转换.....”警告,到实际使用的嘈杂
我明白你的意思了。虽然我同意在大多数情况下这是噪音,但我们修复的优先级较低。如果我们得到更多反馈,我们会查看它。现在我已经按设计关闭了它。
Connect 已被终止,看起来原始问题并未转移到 UserVoice。这是关于同一问题的不同 UserVoice 问题,类型转换可能会影响 CardinalityEstimate - Convert/cast on selected columns
我会提供无聊的答案,直到有人提出更好的答案。
为什么它有警告?
我的猜测。
在 where 子句中使用的列上有一个强制转换,这使得该列的统计信息变得有趣。数据类型的更改使统计数据不好,因此让我们警告一下,以防字段列表中的值最终可能会在某处使用。
字段列表中的强制转换如何影响基数估计?
除非它是派生表中的字段列表,否则不能。
归档时间: |
|
查看次数: |
13225 次 |
最近记录: |