Проблема
При запросе представления в Microsoft SQL Server 2014 или 2016 может потребоваться гораздо больше времени для выполнения по сравнению с выполнением в SQL Server 2008 R2.
При выполнении запроса, в котором используется функция UNION ALL и указанное поле строки (например, предложение TOP N, FAST N или предикат EXISTS), вы можете заметить, что в 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
Команды консоли DBCC и флаги трассировки
Сведения о накопительных обновлениях для SQL Server:
Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Ознакомьтесь с последними накопительными пакетами обновления для SQL Server:
Последний накопительный пакет обновления для SQL Server 2016
Последний накопительный пакет обновления для SQL Server 2014
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Ссылки
Узнайте о терминологии, используемой корпорацией Майкрософт для описания обновлений программного обеспечения.