Проблемы
При выполнении запроса к представлению в Microsoft SQL Server 2014 или 2016 может потребоваться больше времени, если вы сравниваете его с выполнением в SQL Server 2008 R2.
При выполнении запроса, в котором используется объединение ALL и цель строки (например, TOP N, FAST N или exist), вы можете заметить, что запрос выполняется медленнее в SQL Server 2014 или более поздних версиях, если вы сравниваете его с SQL Server 2008 R2.
Причина
В SQL Server 2008 R2 оптимизатор запросов изменяет порядок различных частей в разделе UNION ALL, если задана цель строки, чтобы она была первой. Это позволяет запросу завершить выполнение ранее, если более дешевые части выдают нужное количество строк, не пропуская выполнение более дорогостоящих частей. Такое изменение порядка не происходит в более поздних версиях SQL Server.
Решение
Эта проблема устранена в следующем накопительном обновлении SQL Server:
Накопительное обновление 7 для SQL Server 2016 RTM
Накопительное обновление 4 для SQL Server 2016 с пакетом обновления 1 (SP1)
Накопительное обновление 6 для SQL Server 2014 с пакетом обновления 2 (SP2)
Примечание. Для этой ошибки должна быть включена оптимизация запросов.
Дополнительные сведения о оптимизаторе запросов и флагах трассировки можно найти по следующим ссылкам:
Исправление для оптимизатора запросов SQL Server TF 4199 модель обслуживания
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".
Ссылки
Ознакомьтесь с терминологией, которую корпорация Майкрософт использует для описания обновлений программного обеспечения.