KB4051361 - Gegevens over optimalisatierijdoelen in query-uitvoeringsplan toegevoegd in SQL Server 2014, 2016 en 2017

Van toepassing op
SQL Server 2016 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) SQL Server 2017 Developer SQL Server 2017 Enterprise SQL Server 2017 Enterprise Core 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 Standard - duplicate (do not use)

Overzicht

Voeg het nieuwe kenmerk EstimateRowsWithoutRowGoal query-uitvoeringsplan toe aan SQL Server 2017 Cumulative Update 3 (CU3) en Microsoft SQL Server 2016 Service Pack 2 (SP2).

Wanneer de Query Optimizer een schatting maakt van de kosten van een query-uitvoeringsplan, wordt er meestal van uitgegaan dat alle kwalificerende rijen uit alle bronnen moeten worden verwerkt. Sommige query's zorgen er echter voor dat de Query Optimizer zoekt naar een abonnement waarmee een kleiner aantal rijen sneller wordt geretourneerd. Dit kan gebeuren als in de query een TOP-component, FAST number_rows queryhint, een IN of BESTAAT-component of een SET ROWCOUNT { number | }-instructie wordt @number\_var gebruikt. In dit geval gebruikt het optimalisatieprogramma een rijdoel bij het schatten van het queryplan. Als het rijdoelplan wordt toegepast, wordt het geschatte aantal rijen in het query-uitvoeringsplan verlaagd. Dit komt omdat in het plan wordt aangenomen dat een kleiner aantal rijen moet worden verwerkt om het rijdoel te bereiken.

Notitie De schatting die wordt gemaakt door rijdoel te gebruiken, is een schatting. Als de werkelijke gegevensverdeling niet uniform is, kan deze kleiner zijn dan het werkelijke aantal rijen dat moet worden verwerkt. Daardoor kan dit leiden tot een inefficiënt queryplan. Als tijdelijke oplossing voor dit probleem kunt u de queryoptie HINT ('DISABLE_OPTIMIZER_ROWGOAL') of traceringsvlag 4138 gebruiken.

Zie Inleiding bij Update het argument USE HINT voor queryhints in SQL Server 2016 voor meer informatie. Het kan echter lastig zijn om in complexe query's te bepalen of een rijdoel wordt toegepast en in welke mate dit van invloed is op de plankeuze.

Door het kenmerk EstimateRowsWithoutRowGoal te gebruiken, kunt u de resultaten vergelijken met die van het kenmerk EstimateRows om te zien in welke mate het rijdoel van invloed is op de schattingen van Query Optimizer.

Notitie Als rijdoel niet wordt toegepast op een bepaalde queryplanoperator, wordt dit kenmerk niet opgenomen.

Meer informatie

Deze update is opgenomen in de volgende cumulatieve update voor SQL Server:

Cumulatieve update 3 voor SQL Server 2017

Over cumulatieve updates voor SQL Server:

Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingspatches die deel uitmaakten van de vorige cumulatieve update. Bekijk de meest recente cumulatieve updates voor SQL Server:

Meest recente cumulatieve update voor SQL Server 2017

Servicepackgegevens voor SQL Server

Deze update wordt geïntroduceerd in de volgende servicepacks voor SQL Server:

Servicepack 2 voor SQL Server 2016

Servicepack 3 voor SQL Server 2014

Over servicepacks voor SQL Server:

Servicepacks zijn cumulatief. Elk nieuw servicepack bevat alle correcties uit vorige servicepacks, samen met nieuwe oplossingen. Wij raden aan om het nieuwste servicepack en de meest recente cumulatieve update voor dit servicepack toe te passen. U hoeft geen eerdere servicepack te installeren voordat u het nieuwste servicepack installeert. Gebruik tabel 1 in het volgende artikel voor meer informatie over het nieuwste servicepack en de meest recente cumulatieve update.

Hoe u het versie-, editie- en updateniveau van SQL Server en zijn onderdelen bepaalt

Meer informatie

Meer informatie over de terminologie die Microsoft gebruikt om software-updates te beschrijven.