KB4522127 - ИСПРАВЛЕНО: Плохая производительность запроса из-за оценки низкой кратности в SQL Server 2016 при использовании CE по умолчанию, когда столбец покрывается одно- или многостолбцовой статистикой

Применяется к
SQL Server 2016 Service Pack 2 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 2016 Standard - duplicate (do not use)

Проблема

Предположим, что вы выполнили запрос, включающий объединение или агрегирование для столбца, на который распространяется статистика как по одному, так и по нескольким столбцам (в котором этот столбец не является ведущим). Если вы используете средство оценки количества по умолчанию (CE) в SQL Server 2016, он может недооценивать количество разных строк. Это приводит к неоптимальному плану выполнения запроса (например, низкая оценка может привести к недостаточному временно предоставленному буферу памяти для хэш-оператора, что приводит к переносу запроса в tempdb).

Состояние

Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».

Решение

Эта проблема устранена в следующем накопительном пакете обновления для SQL Server:

Примечание Чтобы это исправление вступило в силу, необходимо включить исправления оптимизатора запросов с использованием флага трассировки (TF) 4199 или соответствующей конфигурации базы данных или параметра запроса hint.

      

Сведения о накопительных обновлениях для SQL Server:

Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Ознакомьтесь с последними накопительными пакетами обновления для SQL Server:

Временное решение

Эту проблему можно устранить, добавив следующую подсказку запроса:

ИСПОЛЬЗУЙТЕ HINT('FORCE_LEGACY_CARDINALITY_ESTIMATION')

Ссылки

Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.