クエリプラン「Cardinality Estimate」の警告


17
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>

なぜ警告があるのですか?

フィールドリストのキャストは、カーディナリティの見積もりにどのように影響しますか?

回答:


12

この警告は、SQL Server 2012の新機能です。

新しい「式での型変換.....」うるさいの実用化へのSQL2012に警告、

意味がわかります。ほとんどの場合、これはノイズであることに同意しますが、修正の優先度は低いです。さらにフィードバックがあれば、それを見ていきます。今のところ、私はこれを意図的に閉じました。

Connectは強制終了され、元の問題がUserVoiceに転送されたようには見えません。同じ問題に関する別のUserVoiceの問題があります。タイプ変換はCardinalityEstimate-選択した列の変換/キャストに影響する場合があります

誰かがより良いものと一緒になるまで、私は退屈な答えを提供します。

なぜ警告があるのですか?

私の推測。
その列の統計を興味深いものにするwhere節で使用される列にキャストがあります。データ型を変更すると、統計情報が役に立たなくなるため、フィールドリストの値がどこかで使用される可能性がある場合に警告します。

フィールドリストのキャストは、カーディナリティの見積もりにどのように影響しますか?

派生テーブルのフィールドリストでない限り、できません。


最後の文に次を追加するか、クエリがビュー定義であり、クエリが問題の警告を示す列でフィルタリングされます
ジョンイスブレナー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.