Симптоми
Да приемем, че имате инсталиран Microsoft SQL Server 2017 или 2019 и че той се изпълнява с оценка за брой обекти по подразбиране (CE). Изпълнявате заявка, която има филтърен предикат в колона Col1. Предикатите за заявки имат вградени предикати UPPER, LOWER или RTRIM. В Col1 има статистика, която да се използва от оптимизатора. При този сценарий може да се наблюдават неточни оценки на брой обекти и че SQL Server използва неефективен план. Следват някои заявки с предикати:
ИЗБЕРЕТЕ person_id ОТ Person WHERE (EMAIL LIKE UPPER(N'@live.com%'))
SELECT person_id FROM Person WHERE (email = UPPER(N'msft@live.com'))
Състояние
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.
Решение
Този проблем е решен в следните кумулативни актуализации за SQL Server:
За кумулативните актуализации за SQL Server:
Всяка нова кумулативна актуализация за SQL Server съдържа всички актуални поправки и корекции на защитата, които са били включени в предишната кумулативна актуализация. Прегледайте последните кумулативни актуализации за SQL Server:
- Последна кумулативна актуализация за SQL Server 2019
- Последна сборна актуализация за SQL Server 2017
Забележка Тази корекция изисква едно от следните неща, за да влезе в сила:
- QUERY_OPTIMIZER_HOTFIXES конфигурация с обхват на база данни зададена на "ВКЛ."
- Използвайте ENABLE_QUERY_OPTIMIZER_HOTFIXES ИЗПОЛЗВАЙТЕ ПОДСКАЗВАНЕ
- Разреши проследяването на флаг 4199
Справки
Научете повече относно терминологията, която Microsoft използва за описване на актуализациите на софтуера.