Povzetek
Dodajte nov atribut načrta izvajanja poizvedbe EstimateRowsWithoutRowGoal zbirnemu paketu posodobitev 3 (CU3) za SQL Server 2017 in servisnemu paketu SP2 za Microsoft SQL Server 2016.
Ko optimizator poizvedb oceni stroške načrta za izvajanje poizvedbe, običajno predvideva, da je treba obdelati vse ustrezne vrstice iz vseh virov. Toda nekatere poizvedbe povzročijo, da optimizator poizvedbe poišče paket, ki bo hitreje vrnil manjše število vrstic. Do tega lahko pride, če poizvedba uporablja stavek TOP , namig poizvedbe FAST number_rows , stavek IN ali EXISTS ali izjavo SET ROWCOUNT { number | @number\_var } . V tem primeru optimizator pri oceni načrta poizvedbe uporablja cilj vrstice. Če uporabite načrt cilja vrstice, se zmanjša predvideno število vrstic v načrtu izvajanja poizvedbe. To je zato, ker je v načrtu predvideno, da bo treba obdelati manjše število vrstic, da bi dosegli cilj vrstice.
Opomba Ocena, ki je narejena s ciljem vrstice, je približna. Če je dejanska porazdelitev podatkov neenakomerna, je lahko manjša od dejanskega števila vrstic, ki jih je treba obdelati. Zato lahko ustvarite neučinkovit načrt poizvedbe. Kot rešitev za to težavo lahko uporabite možnost poizvedbe UPORABI NAMIG (»DISABLE_OPTIMIZER_ROWGOAL«) ali sledi zastavici 4138.
Če želite več informacij, glejte Posodobitev uvaja argument namiga za poizvedbo UPORABA NAMIGA v SQL Server 2016. Vendar pa je lahko v zapletenih poizvedbah težje ugotoviti, ali je cilj vrstice uporabljen in v kolikšni meri to vpliva na izbiro načrta.
Z uporabo atributa »EstimateRowsWithoutRowGoal « lahko primerjate rezultate z rezultati atributa »EstimateRows « in si ogledate, v kolikšni meri cilj vrstice vpliva na ocene optimizatorja poizvedb.
Opomba Če cilj vrstice ni uporabljen za določenega operatorja načrta poizvedbe, ta atribut ni vključen.
Več informacij
Ta posodobitev je vključena v naslednjo zbirno posodobitev za SQL Server:
Zbirna posodobitev 3 za SQL Server 2017
O zbirnih posodobitvah za SQL Server:
Vsaka nova zbirna posodobitev za SQL Server vsebuje vse sprotne in varnostne popravke, ki so bili vključeni v prejšnjo zbirno posodobitev. Oglejte si najnovejše zbirne posodobitve za SQL Server:
Najnovejša zbirna posodobitev za SQL Server 2017
Informacije o servisnem paketu za SQL Server
Ta posodobitev je uvedena v teh servisnih paketih za SQL Server:
Servisni paket 2 za SQL Server 2016
Servisni paket SP3 za SQL Server 2014
O servisnih paketih za SQL Server:
Servisni paketi so zbirni. V vsakem novem servisnem paketu so vsi popravki, ki so na voljo v prejšnjih servisnih paketih, skupaj z morebitnimi novimi popravki. Priporočamo, da za ta servisni paket uporabite najnovejši servisni paket in najnovejšo zbirno posodobitev. Pred namestitvijo najnovejšega servisnega paketa vam ni treba namestiti prejšnjega servisnega paketa. Če želite poiskati več informacij o najnovejšem servisnem paketu in najnovejši zbirni posodobitvi, si oglejte tabelo 1 v naslednjem članku.
Kako določiti različico, izdajo in raven posodobitve za SQL Server in njegove komponente
Sklici
Preberite več o terminologiji, ki jo Microsoft uporablja za opisovanje posodobitev programske opreme.