쿼리 계획 "카디널리티 예상"의 경고


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 절에서 사용되는 열에 대한 캐스트가있어 해당 열의 통계를 흥미롭게 만듭니다. 데이터 유형이 변경되면 통계가 좋지 않으므로 필드 목록의 값이 어딘가에 사용될 수있는 경우를 경고합니다.

필드 목록의 캐스트가 카디널리티 추정에 어떤 영향을 줄 수 있습니까?

파생 테이블의 필드 목록이 아니면 불가능합니다.


마지막 문장에 다음을 추가 하거나 쿼리가 뷰 정의이고 쿼리가 경고를 표시하는 열에서 필터링합니다 .
John Eisbrener
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.