Ознаки
Якщо ви виконуєте запит, у якому є об'єднання таблиці для кластерних стовпців, а речення JOIN ON і WHERE посилаються на одні й ті ж стовпці, SQL Server може не обчислювати хеш-об'єднання для об'єднання таблиць.
Причина
Ця проблема виникає тому, що ключі об'єднання видаляються з дерева запитів під час нормалізації запиту. За своєю конструкцією, SQL ServerSQL Server не створює план геш-об'єднання для об'єднань без ключів об'єднання.
Спосіб усунення проблеми
Відомості про сукупний пакет оновлень
Це покращення представлено в наступному сукупному оновленні SQL ServerSQL Server.
- Сукупний пакет оновлень 1 для SQL ServerSQL Server 2016
- Сукупний пакет оновлень 13 для SQL ServerSQL Server 2014
- Сукупний пакет оновлень 7 для SQL ServerSQL Server 2014 SP1
Рекомендація: інсталюйте останній сукупний пакет оновлень для SQL Server
Кожне нове сукупне оновлення для SQL Server містить усі виправлення та виправлення системи безпеки, які входили до попереднього сукупного пакета оновлень. Радимо завантажити та інсталювати останні сукупні оновлення для SQL Server.
- Останнє сукупне оновлення за SQL Server 2014 (пакет оновлень 1)
- Останнє сукупне оновлення для SQL ServerSQL Server 2016
Спосіб вирішення
Щоб вирішити цю проблему, додайте до запиту підказку OPTION (HASH JOIN).
Додаткові відомості
У цьому сукупному оновленні показано, як SQL Server оцінювати план об'єднання HASH під час об'єднання таблиць зі сховища стовпців. Запити для доступу до таблиць стовпців, можуть отримати вигоду від хеш-з'єднання, оскільки хеш-з'єднання можна виконувати в пакетному режимі.
Щоб увімкнути поліпшення, додайте позначку трасування 2441 до параметрів запуску або додайте до запиту OPTION (QUERYTRACE, 2441).
Стан
Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".