Проблема
Рассмотрим следующий сценарий.
- У вас есть запрос, который использует предикат неравенства для уникального столбца GUID в SQL Server 2014 или 2016.
- Статистика обновляется с использованием выборки по умолчанию. Или новые строки вставляются в таблицу после последнего обновления статистики.
- SQL Server использует средство оценки количества элементов, в котором для режима совместимости базы данных задано значение 120.
- Значения GUID распределены по таблице неравномерно.
В этом сценарии при выполнении запроса может возникнуть снижение производительности из-за неправильно оцененного количества строк для предиката в плане запроса.
Решение
Эта проблема была впервые устранена в следующем накопительном пакете обновления для SQL Server:
Накопительный пакет обновления 6 для SQL Server 2014 с пакетом обновления 1 (SP1)
Накопительный пакет обновления 1 для SQL Server 2016
После установки этого накопительного пакета обновления необходимо включить флаг трассировки 4199. Для этого можно добавить параметр запуска -T4199. Или можно использовать инструкцию dbcc traceon(4199) для конкретного сеанса.
Сведения о накопительных обновлениях для SQL Server
Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Ознакомьтесь с последними накопительными пакетами обновления для SQL Server:
Последний накопительный пакет обновления для SQL Server 2014
Последний накопительный пакет обновления для SQL Server 2016
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Ссылки
Узнайте о терминологии , используемой корпорацией Майкрософт для описания обновлений программного обеспечения.