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句で使用される列にキャストがあり、その列の統計が興味深いものになっています。データ型を変更すると統計が悪くなるため、フィールドリストの値がどこかで使用される可能性がある場合は、そのことについて警告します。
フィールドリストのキャストは、カーディナリティの推定にどのように影響しますか?
派生テーブルのフィールドリストでない限り、それはできません。