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.