Резюме
Добавете новия атрибут на плана за изпълнение на заявка EstimateRowsWithoutRowGoal към сборна актуализация 3 (CU3) на SQL Server 2017 и Microsoft SQL Server 2016 Service Pack 2 (SP2).
Когато оптимизаторът на заявките изчислява цената на план за изпълнение на заявка, той обикновено предполага, че всички отговарящи на условията редове от всички източници трябва да бъдат обработени. Някои заявки обаче карат оптимизатора на заявките да търси план, който ще върне по-малък брой редове по-бързо. Това може да се случи, ако заявката използва клауза TOP , подсказване за заявка FAST number_rows , клауза IN или EXISTS или команда SET ROWCOUNT { number | @number\_var } . В този случай оптимизаторът използва цел за ред, когато оценява плана на заявката. Ако се приложи планът за цел на редовете, изчисленият брой редове в плана за изпълнение на заявката се намалява. Това е така, защото планът предполага, че ще трябва да се обработят по-малък брой редове, за да се постигне целта за редове.
Забележка Оценката, която се прави с помощта на цел на реда, е приблизителна. Ако действителното разпределение на данните не е равномерно, то може да бъде по-малко от действителния брой редове, които трябва да бъдат обработени. Следователно това може да създаде неефективен план за заявки. Като заобиколно решение за този проблем можете да използвате опцията на заявката "ИЗПОЛЗВАЙ ПОДСКАЗВАНЕ" ('DISABLE_OPTIMIZER_ROWGOAL') или Trace Flag 4138.
За повече информация вижте Актуализацията въвежда аргумента за подсказване на заявка HINT в SQL Server 2016. Може обаче да е трудно да се определи в сложни заявки дали се прилага цел за ред и доколко влияе тя върху избора на план.
Като използвате атрибута EstimateRowsWithoutRowGoal , можете да сравните резултатите с тези на атрибута EstimateRows , за да видите доколко цел на реда влияе върху оценките на оптимизатора на заявките.
Забележка Ако целта на реда не е приложена към конкретен оператор за план за заявка, този атрибут не се включва.
Повече информация
Тази актуализация е включена в следната кумулативна актуализация за SQL Server:
Сборна актуализация 3 за SQL Server 2017
За кумулативните актуализации за SQL Server:
Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната кумулативна актуализация. Прегледайте последните кумулативни актуализации за SQL Server:
Последна сборна актуализация за SQL Server 2017
Информация за сервизен пакет за SQL Server
Тази актуализация е въведена в следните сервизни пакети за SQL Server:
Service Pack 2 за SQL Server 2016
Service Pack 3 за SQL Server 2014
За сервизните пакети за SQL Server:
Сервизните пакети са кумулативни. Всеки нов сервизен пакет съдържа всички корекции, които са в предишните сервизни пакети, заедно с всички нови корекции. Нашата препоръка е да се приложи най-новият сервизен пакет и най-новата кумулативна актуализация за този сервизен пакет. Не е необходимо да инсталирате предишен сервизен пакет, преди да инсталирате най-новия сервизен пакет. Използвайте таблица 1 в следващата статия, за да намерите повече информация относно най-новия сервизен пакет и най-новата кумулативна актуализация.
Как да определите версията, изданието и нивото на актуализация на SQL Server и неговите компоненти
Справки
Научете повече относно терминологията, която Microsoft използва за описване на актуализациите на софтуера.