Rezumat
Adăugați noul atribut al planului de execuție a interogării EstimateRowsWithoutRowGoal la actualizarea cumulativă 3 (CU3) pentru SQL Server 2017 și la Microsoft SQL Server 2016 cu Service Pack 2 (SP2).
Atunci când instrumentul de optimizare a interogărilor estimează costul unui plan de executare a interogării, presupune, de obicei, că trebuie procesate toate rândurile care se califică din toate sursele. Totuși, unele interogări determină funcția de optimizare a interogărilor să caute un plan care va returna mai rapid un număr mai mic de rânduri. Acest lucru se poate întâmpla dacă interogarea utilizează o clauză TOP , un indiciu de interogare FAST number_rows , o clauză IN sau EXISTS sau o instrucțiune SET ROWCOUNT { number | @number\_var } . În acest caz, optimizatorul utilizează un obiectiv rând atunci când estimează planul de interogare. Dacă se aplică planul de obiective de rânduri, numărul estimat de rânduri în planul de executare a interogării este redus. Aceasta deoarece planul presupune că va trebui procesat un număr mai mic de rânduri pentru a atinge obiectivul rândurilor.
Notă Estimarea efectuată utilizând obiectivul rândului este aproximativă. Dacă distribuția efectivă a datelor nu este uniformă, poate fi mai mică decât numărul real de rânduri care trebuie procesate. Prin urmare, ar putea crea un plan de interogare ineficient. Ca soluție de evitare pentru această problemă, puteți utiliza opțiunea de interogare USE HINT ('DISABLE_OPTIMIZER_ROWGOAL') sau Trace Flag 4138.
Pentru mai multe informații, consultați Actualizare prezintă argumentul indiciu de interogare USE HINT în SQL Server 2016. Cu toate acestea, poate fi o provocare să identificați în interogările complexe dacă un obiectiv de rând este aplicat și cât de mult afectează acesta alegerea planului.
Utilizând atributul EstimateRowsWithoutRowGoal , puteți compara rezultatele cu cele ale atributului EstimateRows pentru a vedea cât de mult afectează obiectivul rândului estimările instrumentului de optimizare a interogărilor.
Notă Dacă obiectivul rândului nu este aplicat unui anumit operator de plan de interogare, acest atribut nu este inclus.
Mai multe informații
Această actualizare este inclusă în următoarea actualizare cumulativă pentru SQL Server:
Actualizarea cumulativă 3 pentru SQL Server 2017
Despre actualizările cumulative pentru SQL Server:
Fiecare actualizare cumulativă nouă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse cu actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Cea mai recentă actualizare cumulativă pentru SQL Server 2017
Informații despre pachetele Service Pack pentru SQL Server
Această actualizare este introdusă în următoarele pachete Service Pack pentru SQL Server:
Service Pack 2 pentru SQL Server 2016
Service Pack 3 pentru SQL Server 2014
Despre pachetele Service Pack pentru SQL Server:
Pachetele Service Pack sunt cumulative. Fiecare pachet Service Pack nou conține toate remedierile din pachetele Service Pack anterioare, împreună cu orice remedieri noi. Recomandarea noastră este să aplicați cel mai recent pachet Service Pack și cea mai recentă actualizare cumulativă pentru acel pachet Service Pack. Nu trebuie să instalați un pachet Service Pack anterior înainte de a instala cel mai recent pachet Service Pack. Utilizați Tabelul 1 din următorul articol pentru a găsi mai multe informații despre cel mai recent pachet Service Pack și cea mai recentă actualizare cumulativă.
Cum se determină versiunea, ediția și nivelul de actualizare al SQL Server și al componentelor sale
Referințe
Aflați despre terminologia pe care o utilizează Microsoft pentru a descrie actualizările de software.