Проблема
При выполнении запроса с объединением таблиц для кластеризованных таблиц columnstore и предложениях JOIN ON и WHERE ссылаются на одни и те же столбцы, SQL Server может не оценить хэш-соединение для соединения таблицы.
Причина
Эта проблема возникает из-за того, что ключи соединения удаляются из дерева запроса во время нормализации запроса. По умолчанию SQL Server не создает план хэш-соединения для соединений без ключей соединения.
Решение
Сведения о накопительном пакете обновления
Это улучшение появилось в следующем накопительном пакете обновления SQL Server.
- Накопительный пакет обновления 1 для SQL Server 2016
- Накопительный пакет обновления 13 для SQL Server 2014
- Накопительный пакет обновления 7 для SQL Server 2014 с пакетом обновления 1 (SP1)
Рекомендация. Установите последний накопительный пакет обновления для SQL Server
Каждый новый накопительный пакет обновления для SQL Server содержит все исправления и исправления безопасности, которые входили в состав предыдущего накопительного пакета обновления. Рекомендуется скачать и установить последние накопительные пакеты обновления для SQL Server:
- Последний накопительный пакет обновления для SQL Server 2014 (SP1)
- Последний накопительный пакет обновления для SQL Server 2016
Временное решение
Чтобы обойти эту проблему, добавьте в запрос подсказку OPTION (HASH JOIN).
Дополнительные сведения
Этот накопительный пакет обновления указывает, что SQL Server оценивает план соединения HASH при выполнении соединения для таблиц columnstore. Запросы, обращающиеся к таблицам columnstore, могут выиграть от хэш-соединения, так как хэш-соединение может выполняться в пакетном режиме.
Чтобы включить улучшение, добавьте флаг трассировки 2441 к параметрам запуска или добавьте OPTION (QUERYTRACE, 2441) в запрос.
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».