KB3107397 – Verbesserte Diagnose für Abfrageausführungspläne, die ein verbleibendes Prädikat-Pushdown in SQL Server beinhalten

Gilt für
SQL Server 2012 Enterprise SQL Server 2012 Web SQL Server 2012 Developer SQL Server 2012 Standard SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Express - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use)

Symptome

Einige Abfrageausführungspläne in Microsoft SQL Server beinhalten das Muster der Auswertung eines Filters über einem Tabellen- oder Index-Scan-/Bereichsvorgang. Einige Teile des Filterprädikats können mit einem Indexschlüssel übereinstimmen und daher zum Ausführen einer Indexsuche oder eines Bereichsscans verwendet werden. Die verbleibenden Teile des Prädikats werden als "Rest" bezeichnet und müssen für jede Zeile ausgewertet werden, die durch den Scan- oder Bereichsvorgang ausgegeben wird. Dies entspricht einem Filteroperator. Um jedoch die Leistung zu verbessern, kann SQL Server einen solchen Filter per Push an den Tabellenzugriffsoperator selbst übertragen.

Obwohl dieser Ansatz die Leistung insgesamt verbessert, verarbeitet der Scan-Below-Filter unter bestimmten Bedingungen (z. B. im Fall einer ungenauen Kardinalitätsschätzung im Zusammenhang mit der Parametersensitivität) möglicherweise eine größere Anzahl von Zeilen als erwartet. Diese Tatsache kann bei der Problembehandlung bei der Abfrageleistung ausgeblendet werden, wenn Sie einen tatsächlichen Ausführungsplan verwenden, da die tatsächliche Anzahl zurückgegebener Zeilen der Anzahl der Zeilen entspricht, nachdem das Restprädikat angewendet wurde, und nicht die tatsächliche Anzahl von Zeilen, die aus einer Tabelle oder einem Index gescannt werden.

Lösung

Um die Diagnose für das im Abschnitt "Symptome" beschriebene Szenario zu verbessern, führen SQL Server 2012 Service Pack 3 (SP3) und SQL Server 2014 SP2 ein neues Showplan-XML-Attribut ein, Actual Rows Read. Dieses Attribut gibt Auskunft darüber, wie viele Zeilen vom Operator gelesen wurden, bevor das Residualprädikat angewendet wurde.

Diese Funktionalität wurde zuerst in den folgenden Service Packs für SQL Server eingeführt. 

Weitere Informationen zu SQL Server 2012 Service Pack 3 (SP3) finden Sie unter In SQL Server 2012 Service Pack 3 behobene Fehler.

Service Pack 2 für SQL Server für SQL Server 2014
        
         SQL Server 2016 Service Pack 1 (SP1) 

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. Wir empfehlen, 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. In Tabelle 1 im folgenden Artikel finden Sie weitere Informationen zum neuesten Service Pack und zum neuesten kumulativen Update.

Ermitteln der Version, Edition und Updatestufe von SQL Server und seinen Komponenten