Warnung im Abfrageplan "Kardinalitätsschätzung"


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

Die obige Abfrage enthält eine Warnung im Abfrageplan.

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

Warum hat es die Warnung?

Wie könnte sich eine Besetzung in der Feldliste auf die Kardinalitätsschätzung auswirken?

Antworten:


12

Diese Warnung war neu für SQL Server 2012.

Von der neuen Warnung "Typkonvertierung in Ausdruck ....." in SQL2012 bis zur lauten praktischen Verwendung

Ich verstehe was du meinst. Ich stimme zu, dass dies in den meisten Fällen Rauschen ist, aber es hat für uns nur geringe Priorität, es zu beheben. Wir werden es uns ansehen, wenn wir mehr Feedback bekommen. Für den Moment habe ich dies mit Absicht geschlossen.

Connect wurde beendet und es sieht nicht so aus, als ob das ursprüngliche Problem auf UserVoice übertragen wurde. Hier ist ein anderes UserVoice-Problem in Bezug auf dasselbe Problem: Die Typkonvertierung in kann sich auf CardinalityEstimate - Konvertieren / Umwandeln ausgewählter Spalten auswirken

Ich werde die langweilige Antwort geben, bis jemand mit einer besseren kommt.

Warum hat es die Warnung?

Spekulation meinerseits.
Es gibt eine Besetzung für eine Spalte, die in der where-Klausel verwendet wird und die Statistiken dieser Spalte interessant macht. Eine Änderung des Datentyps macht die Statistik ungültig. Lassen Sie uns daher warnen, falls der Wert aus der Feldliste irgendwo verwendet werden könnte.

Wie könnte sich eine Besetzung in der Feldliste auf die Kardinalitätsschätzung auswirken?

Dies ist nur möglich, wenn es sich um die Feldliste in einer abgeleiteten Tabelle handelt.


Ich würde das Folgende an den letzten Satz anhängen, oder die Abfrage ist eine Ansichtsdefinition und Abfragen filtern nach der Spalte, in der die betreffende Warnung angezeigt wird .
John Eisbrener
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.