KB4051361 – SQL Server 2014:ssä, 2016:ssa ja 2017:ssä lisätyt optimoijan rivin tavoitetiedot kyselyn toimeenpanosuunnitelmassa

Käytetään kohteeseen
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)

Yhteenveto

Lisää uusi EstimateRowsWithoutRowGoal-kyselyn suoritussuunnitelman määrite SQL Server 2017:n kumulatiiviseen päivitykseen 3 (CU3) ja Microsoft SQL Server 2016 Service Pack 2:een (SP2).

Kun kyselyn optimointitoiminto arvioi kyselyn suoritussuunnitelman kustannuksia, se olettaa yleensä, että kaikkien lähteiden kaikki ehdot täyttävät rivit on käsiteltävä. Jotkin kyselyt kuitenkin saavat kyselyn optimoijan etsimään suunnitelmaa, joka palauttaa pienemmän määrän rivejä nopeammin. Näin voi käydä, jos kysely käyttää TOP-lausetta , FAST number_rows kyselyvihjettä, IN- tai EXISTS-lauseketta tai SET ROWCOUNT { number | @number\_var } -lauseketta. Tässä tapauksessa optimoija käyttää rivitavoitetta arvioidessaan kyselysuunnitelmaa. Jos rivitavoitesuunnitelmaa käytetään, kyselyn suoritussuunnitelman rivien arvioitu määrä pienenee. Tämä johtuu siitä, että suunnitelmassa oletetaan, että rivitavoitteen saavuttamiseksi on käsiteltävä vähemmän rivejä.

Huomautus Rivitavoitteen avulla tehty arvio on likimääräinen. Jos tietojen varsinainen jakauma ei ole yhtenäinen, se saattaa olla pienempi kuin käsiteltävien rivien todellinen määrä. Tästä syystä se voi luoda tehottoman kyselysuunnitelman. Ongelman vaihtoehtoisena menetelmänä voit käyttää USE HINT ('DISABLE_OPTIMIZER_ROWGOAL') -kyselyvaihtoehtoa tai Trace Flag 4138 -merkintää.

Lisätietoja on artikkelissa Päivitys introduces USE HINT -kyselyvihjeargumentti SQL Server 2016:ssa. Monimutkaisissa kyselyissä voi kuitenkin olla haastavaa määrittää, käytetäänkö rivitavoitetta ja kuinka paljon se vaikuttaa suunnitelman valintaan.

Käyttämällä EstimateRowsWithoutRowGoal-määritettä voit verrata tuloksia EstimateRows-määritteeseen ja nähdä, kuinka paljon rivitavoite vaikuttaa kyselyn optimoijan arvioihin.

Huomautus Jos rivitavoitetta ei käytetä tietyssä kyselysuunnitelmaoperaattorissa, tätä määritettä ei sisällytetä.

Lisätietoja

Tämä päivitys sisältyy seuraavaan SQL Server kumulatiiviseen päivitykseen:

SQL Server 2017:n kumulatiivinen päivitys 3

Tietoja SQL Server:n kumulatiivisista päivityksistä:

Jokainen uusi SQL Server -kumulatiivinen päivitys sisältää kaikki edelliseen kumulatiiviseen päivitykseen sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Tutustu SQL Serverin uusimpiin kumulatiivisiin päivityksiin:

SQL Server 2017:n uusin kumulatiivinen päivitys

SQL Server Service Pack -tiedot

Tämä päivitys sisältyy seuraaviin SQL Server Service Pack -paketteihin:

Service Pack 2 for SQL Server 2016

Service Pack 3 SQL Server 2014:lle

Tietoja SQL Server Service Pack -paketeista:

Service Pack -paketit ovat kumulatiivisia. Jokainen uusi Service Pack sisältää kaikki aiempien Service Packien sisältämät korjaukset sekä mahdolliset uudet korjaukset. Suosittelemme ottamaan käyttöön kyseisen Service Packin uusimman Service Packin ja uusimman kumulatiivisen päivityksen. Sinun ei tarvitse asentaa aiempaa Service Packia ennen uusimman Service Packin asentamista. Seuraavan artikkelin taulukosta 1 saat lisätietoja uusimmasta Service Packista ja uusimmasta kumulatiivisesta päivityksestä.

SQL Server:n ja sen osien version, version ja päivitystason selvittäminen

Viitteet

Lue tietoja Microsoftin ohjelmistopäivitystensä kuvaamiseen käyttämästä sanastosta.