Аннотация
Добавьте новый атрибут плана выполнения запроса EstimateRowsWithoutRowGoal в SQL Server 2017 накопительное обновление 3 (CU3) и Microsoft SQL Server 2016 с пакетом обновления 2 (SP2).
Если оптимизатор запросов оценивает стоимость плана выполнения запроса, обычно предполагается, что все соответствующие строки из всех источников должны обрабатываться. Тем не менее, в некоторых запросах оптимизатор запросов может найти план, который быстрее будет возвращать меньшее количество строк. Это может произойти в том случае, если в запросе используется предложение Top , функция Fast Number_rows либо предложение in или Exists , либо инструкция SET ROWCOUNT {Number | @number_var} . В этом случае оптимизатор использует целевую задачу строки, если она оценивает план запроса. Если применен план цели строки, будет уменьшено предполагаемое количество строк в плане выполнения запроса. Это связано с тем, что в плане предполагается, что для достижения цели строки нужно будет обрабатывать меньшее количество строк.
Примечание. Оценка, созданная с помощью цели строки, является приблизительной. Если фактическое распространение данных не является универсальным, оно может быть меньше фактического количества строк, которые нужно обработать. Таким образом, возможно создание неэффективного плана запроса. Чтобы устранить эту проблему, можно использовать параметр запроса на ПОДсказку "использование" ("DISABLE_OPTIMIZER_ROWGOAL") или флаг трассировки 4138.
Дополнительные сведения можно найти в разделе Update содержит описание аргумента подсказок запроса USE в SQL server 2016. Тем не менее, в сложных запросах может возникнуть вероятность того, какая цель строки применена, и сколько она влияет на выбор плана.
С помощью атрибута EstimateRowsWithoutRowGoal можно сравнивать результаты с атрибутами EstimateRows , чтобы узнать, сколько цель строки влияет на оценки оптимизатора запросов.
Примечание. Если для конкретного оператора плана запроса не применяется цель строки, этот атрибут не включается.
Дополнительная информация
Это обновление включено в накопительный пакет обновления SQL Server, описанный ниже.
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Сведения о пакете обновления для SQL Server
Это обновление представлено в указанных ниже пакетах обновления для SQL Server.
Пакеты обновления являются накопительными. Каждый новый пакет обновления включает все исправления из предыдущих пакетов обновления вместе с новыми исправлениями. Наши рекомендации относятся к установке последнего пакета обновления и последнего накопительного обновления для этого пакета обновления. Перед установкой последнего пакета обновления вам не нужно устанавливать предыдущий пакет обновления. С помощью таблицы 1 в следующей статье вы узнаете, как найти дополнительные сведения о последнем пакете обновления и новейшем накопительном обновлении.
Определение версии, выпуска и уровня обновления SQL Server и его компонентов
Ссылки
Ознакомьтесь с терминологией, которую корпорация Майкрософт использует для описания обновлений программного обеспечения.