KB4051361 – Måloplysninger om optimeringsrække i forespørgselseksekveringsplan tilføjet i SQL Server 2014, 2016 og 2017

Gælder for
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)

Resumé

Føj den nye attribut EstimateRowsWithoutRowGoal-forespørgselsudførelsesplan til SQL Server 2017 Cumulative Update 3 (CU3) og Microsoft SQL Server 2016 Service Pack 2 (SP2).

Når forespørgselsoptimering estimerer omkostningerne ved en forespørgselseksekveringsplan, antages det normalt, at alle kvalificerende rækker fra alle kilder skal behandles. Nogle forespørgsler får dog forespørgselsoptimering til at søge efter en plan, der returnerer et mindre antal rækker hurtigere. Dette kan ske, hvis forespørgslen bruger en TOP-delsætning , FAST number_rows-forespørgselstip , en IN - eller EXISTS-delsætning eller en SET ROWCOUNT { number | @number\_var } -sætning. I dette tilfælde bruger optimeringsfunktionen et rækkemål, når den estimerer forespørgselsplanen. Hvis rækkemålsplanen anvendes, reduceres det anslåede antal rækker i udførelsesplanen for forespørgslen. Dette skyldes, at det i planen antages, at et mindre antal rækker skal behandles for at nå rækkemålet.

Bemærk Det skøn, der er foretaget ved hjælp af rækkemål, er cirkaværdigt. Hvis den faktiske datafordeling ikke er ensartet, kan den være mindre end det faktiske antal rækker, der skal behandles. Det kan derfor oprette en ineffektiv forespørgselsplan. Som en løsning på dette problem kan du bruge forespørgselsindstillingen USE HINT ('DISABLE_OPTIMIZER_ROWGOAL') eller Sporingsflag 4138.

Du kan finde flere oplysninger under Update introducerer argumentet USE HINT-forespørgselstip i SQL Server 2016. Det kan dog være en udfordring i komplekse forespørgsler at identificere, om et rækkemål er anvendt, og hvor meget det påvirker valget af plan.

Ved hjælp af attributten EstimateRowsWithoutRowGoal kan du sammenligne resultaterne med resultaterne for attributten EstimateRows for at se, hvor meget rækkemål påvirker estimaterne i forespørgselsoptimeringen.

Bemærk Hvis rækkemål ikke anvendes på en bestemt forespørgselsplanoperator, er denne attribut ikke inkluderet.

Flere oplysninger

Denne opdatering er inkluderet i følgende kumulative opdatering til SQL Server:

Samlet opdatering 3 til SQL Server 2017

Om kumulative opdateringer til SQL Server:

Hver ny kumulativ opdatering til SQL Server indeholder alle de hotfixes og alle de sikkerhedsrettelser, der fulgte med den forrige kumulative opdatering. Se de seneste kumulative opdateringer til SQL Server:

Seneste kumulative opdatering til SQL Server 2017

Servicepakkeoplysninger for SQL Server

Denne opdatering introduceres i følgende servicepakker til SQL Server:

Service Pack 2 til SQL Server 2016

Service Pack 3 til SQL Server 2014

Om servicepakker til SQL Server:

Servicepakker er akkumulerede. Hver ny service pack indeholder alle de rettelser, der var inkluderet i tidligere service packs, samt eventuelle nye rettelser. Vores anbefaling er at anvende den seneste servicepakke og den seneste kumulative opdatering for den pågældende servicepakke. Det er ikke nødvendigt at installere en tidligere servicepakke, før du installerer den seneste udgave. Brug tabel 1 i følgende artikel for at finde flere oplysninger om den seneste servicepakke og seneste samlede opdatering.

Sådan bestemmer du versionen, udgaven og opdateringsniveauet for SQL Server og dens komponenter

Referencer

Få mere at vide om den terminologi, som Microsoft bruger til at beskrive softwareopdateringer.