Samenvatting
Voeg het nieuwe EstimateRowsWithoutRowGoal -kenmerk voor queryuitvoering toe aan SQL Server 2017 cumulatieve update 3 (CU3) en Microsoft SQL Server 2016 Service Pack 2 (SP2).
Wanneer de queryoptimalisatie de kosten van een query execution plan beschat, wordt er meestal van uitgegaan dat alle in aanmerking komende rijen uit alle bronnen moeten worden verwerkt. Met sommige query's wordt echter gezocht naar een planning die een kleiner aantal rijen sneller retourneert. Dit kan gebeuren als de query een Top -component gebruikt, een snelle number_rows queryhint , een ofExists -component of een set RowCount {Number | @number_var} . In dit geval gebruikt de Optimizer een rij-doel voor de schatting van het queryplan. Als het plan voor de rijpositie wordt toegepast, wordt het geschatte aantal rijen in het query execution plan verlaagd. Dit komt doordat het abonnement ervan uitgaat dat een kleiner aantal rijen moet worden verwerkt om het doel van de rij te kunnen bereiken.
Opmerking De schatting die wordt gemaakt met behulp van het doel van de rij is ongeveer gelijk. Als de werkelijke Gegevensdistributie niet uniform is, is het mogelijk kleiner dan het werkelijke aantal rijen dat moet worden verwerkt. Daarom kon dit een niet-efficiënt queryplan maken. Als tijdelijke oplossing voor dit probleem kunt u de queryoptie Hint gebruiken (' DISABLE_OPTIMIZER_ROWGOAL ') of traceringsvlag 4138 gebruiken.
Zie voor meer informatie update bevat het argument Hint query gebruiken in SQL Server 2016. Dit kan lastig zijn om complexe query's te identificeren, ongeacht of er een doel van een rij wordt toegepast en wat de invloed heeft op de optie van het abonnement.
Met behulp van het kenmerk EstimateRowsWithoutRowGoal kunt u de resultaten vergelijken met die van het EstimateRows -kenmerk, zodat u kunt zien hoeveel het doel van de rij van invloed is op de schattingen voor de query optimalisatie.
Opmerking Dit kenmerk is niet van toepassing als het doel van de rij niet wordt toegepast op een bepaald queryplan.
Meer informatie
Deze update is opgenomen in de volgende cumulatieve update voor SQL Server:
Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige cumulatieve update. Bekijk de nieuwste cumulatieve updates voor SQL Server:
Informatie over service packs voor SQL Server
Deze update is opgenomen in de volgende service packs voor SQL Server:
Service packs zijn cumulatief. Elk nieuw Service Pack bevat alle correcties in eerdere service packs, samen met eventuele nieuwe oplossingen. We raden u aan het meest recente Service Pack en de nieuwste cumulatieve update voor dat Service Pack toe te passen. U hoeft geen vorig Service Pack te installeren voordat u het nieuwste Service Pack installeert. Gebruik tabel 1 in het volgende artikel voor meer informatie over de meest recente Service Pack en de nieuwste cumulatieve update.
De versie, de editie en het update niveau van SQL Server en de bijbehorende onderdelen bepalen
Verwijzingen
Lees meer over de terminologiedie door Microsoft wordt gebruikt om software-updates te beschrijven.