Advertencia en el plan de consulta "Estimación de cardinalidad"


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

La consulta anterior tiene una advertencia en el plan de consulta.

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

¿Por qué tiene la advertencia?

¿Cómo podría un reparto en la lista de campos afectar la estimación de cardinalidad?

Respuestas:


12

Esta advertencia era nueva para SQL Server 2012.

Desde la nueva advertencia de "Conversión de tipo en expresión ....." en SQL2012, de uso ruidoso a práctico

Veo a que te refieres. Si bien estoy de acuerdo en que esto es ruido en la mayoría de los casos, es de baja prioridad para nosotros solucionarlo. Lo veremos si recibimos más comentarios. Por ahora he cerrado esto por diseño.

Connect fue eliminado y no parece que el problema original haya sido transferido a UserVoice. Aquí hay un problema diferente de UserVoice sobre el mismo problema, la conversión de tipo puede afectar a CardinalityEstimate - Convertir / emitir en columnas seleccionadas

Proporcionaré la respuesta aburrida hasta que alguien venga con una mejor.

¿Por qué tiene la advertencia?

Especulaciones de mi parte.
Hay un reparto en una columna que se usa en la cláusula where que hace que las estadísticas de esa columna sean interesantes. Un cambio de tipo de datos hace que las estadísticas no sean buenas, así que avisemos sobre eso en caso de que el valor de la lista de campos pueda terminar para usarse en alguna parte.

¿Cómo podría un reparto en la lista de campos afectar la estimación de cardinalidad?

No puede a menos que sea la lista de campos en una tabla derivada.


Añadiría lo siguiente a la última oración, o la consulta es una definición de vista y las consultas se filtrarán en la columna que muestra la advertencia en cuestión .
John Eisbrener
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.