Zusammenfassung
Fügen Sie das neue Attribut des Abfrageausführungsplans EstimateRowsWithoutRowGoal zu SQL Server kumulativen Update 3 (CU3) und Microsoft SQL Server 2016 Service Pack 2 (SP2) hinzu.
Wenn der Abfrageoptimierer die Kosten eines Abfrageausführungsplans schätzt, geht er in der Regel davon aus, dass alle qualifizierenden Zeilen aus allen Quellen verarbeitet werden müssen. Einige Abfragen führen jedoch dazu, dass der Abfrageoptimierer nach einem Plan sucht, der schneller eine kleinere Anzahl von Zeilen zurückgibt. Dies kann auftreten, wenn die Abfrage eine TOP-Klausel , fast number_rows Abfragehinweis, eine IN - oder EXISTS-Klausel oder eine SET ROWCOUNT { number | @number\_var } -Anweisung verwendet. In diesem Fall verwendet der Optimierer ein Zeilenziel, wenn er den Abfrageplan schätzt. Wenn der Zeilenzielplan angewendet wird, wird die geschätzte Anzahl von Zeilen im Abfrageausführungsplan reduziert. Dies liegt daran, dass der Plan davon ausgeht, dass eine kleinere Anzahl von Zeilen verarbeitet werden muss, um das Zeilenziel zu erreichen.
Hinweis Die Schätzung, die mithilfe des Zeilenziels erstellt wird, ist ungefähr. Wenn die tatsächliche Datenverteilung nicht einheitlich ist, kann sie kleiner sein als die tatsächliche Anzahl von Zeilen, die verarbeitet werden müssen. Daher könnte ein ineffizienter Abfrageplan erstellt werden. Um dieses Problem zu umgehen, können Sie die Abfrageoption USE HINT ('DISABLE_OPTIMIZER_ROWGOAL') oder Ablaufverfolgungsflag 4138 verwenden.
Weitere Informationen finden Sie unter Update führt ein USE HINT-Abfragehinweisargument in SQL Server 2016 ein. Es kann jedoch schwierig sein, in komplexen Abfragen zu ermitteln, ob ein Zeilenziel angewendet wird und wie sehr es sich auf die Planauswahl auswirkt.
Mithilfe des Attributs EstimateRowsWithoutRowGoal können Sie die Ergebnisse mit denen des EstimateRows-Attributs vergleichen, um zu sehen, wie sehr sich das Zeilenziel auf die Schätzungen des Abfrageoptimierers auswirkt.
Hinweis Wenn das Zeilenziel nicht auf einen bestimmten Abfrageplanoperator angewendet wird, ist dieses Attribut nicht enthalten.
Weitere Informationen
Dieses Update ist im folgenden kumulativen Update für SQL Server enthalten:
Kumulatives Update 3 für SQL Server 2017
Informationen zu kumulativen Updates für SQL Server:
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsfixes, die im vorherigen kumulativen Update enthalten waren. Sehen Sie sich die neuesten kumulativen Updates für SQL Server an:
Neuestes kumulative Update für SQL Server 2017
Service Pack-Informationen für SQL Server
Dieses Update wird in den folgenden Service Packs für SQL Server eingeführt:
Service Pack 2 für SQL Server 2016
Service Pack 3 für SQL Server 2014
Informationen zu Service Packs für SQL Server:
Service Packs sind kumulativ. Jedes neue Service Pack enthält neben neuen Updates alle Updates früherer Service Packs. Es wird empfohlen, das neueste Service Pack und das neueste kumulative Update für dieses Service Pack anzuwenden. Sie müssen also keine älteren Versionen eines Service Packs installieren, bevor Sie das neueste Service Pack installieren. Verwenden Sie Tabelle 1 im folgenden Artikel, um weitere Informationen zum neuesten Service Pack und zum neuesten kumulativen Update zu finden.
Ermitteln der Version, Edition und Updatestufe von SQL Server und seinen Komponenten
Referenzmaterial
Informieren Sie sich über die Terminologie, die Microsoft zum Beschreiben von Softwareupdates verwendet.