Sql-Server

查詢計劃“基數估計”中的 警告

  • February 8, 2019
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

上面的查詢在查詢計劃中有警告。

<Warnings>
 <PlanAffectingConvert ConvertIssue="Cardinality Estimate" Expression="CONVERT(varchar(10),[xx].[dbo].[T].[ID],0)" />
</Warnings>

為什麼會有警告?

欄位列表中的演員如何影響基數估計?

此警告是 SQL Server 2012 的新警告。

SQL2012 中的新“表達式中的類型轉換…..”警告,到嘈雜到實際使用

我明白你的意思了。雖然我同意這在大多數情況下都是噪音,但我們修復它的優先級較低。如果我們得到更多回饋,我們會查看它。現在我已經按設計關閉了它。

Connect 已被終止,看起來原始問題並未轉移到 UserVoice。這是關於同一問題的不同 UserVoice 問題,類型轉換可能會影響 CardinalityEstimate - 在選定列上轉換/轉換

在有人提出更好的答案之前,我將提供無聊的答案。

為什麼會有警告?

我的猜測。

在 where 子句中使用的列上有一個強制轉換,它使該列的統計資訊變得有趣。數據類型的更改使統計數據變得不好,因此讓我們警告一下,以防欄位列表中的值最終可能會在某處使用。

欄位列表中的演員如何影響基數估計?

它不能,除非它是派生表中的欄位列表。

引用自:https://dba.stackexchange.com/questions/33528