Так, якщо ви:
- запущений SQL Server 2014 або новішої версії; і
- вміють запускати запит із прапором 176 активності; і
- обчислена колонка
PERSISTED
В Зокрема, за Принаймні , такі версії потрібні :
- Сукупне оновлення 2 для SQL Server 2016 SP1
- Сукупне оновлення 4 для RTM SQL Server 2016
- Сукупне оновлення 6 для SQL Server 2014 SP2
АЛЕ, щоб уникнути помилок (посилання на 2014 та 2016 та 2017 роки ), введені в цих виправленнях, замість цього застосуйте:
Прапор трасування є ефективним як –T
варіант запуску , як у глобальному, так і в межах сеансу DBCC TRACEON
, а також за запитом OPTION (QUERYTRACEON)
або керівництвом плану.
Прапор трасування 176 запобігає збереженню обчисленого розширення стовпців.
Початкове завантаження метаданих, виконане при складанні запиту, містить усі стовпці, а не лише ті, на які безпосередньо посилається. Це робить усі визначення обчислених стовпців доступними для відповідності, що, як правило, є хорошою справою.
Як невдалий побічний ефект, якщо один із завантажених (обчислених) стовпців використовує скалярну функцію, визначену користувачем, його наявність відключає паралелізм для всього запиту, навіть коли обчислений стовпець фактично не використовується .
Прапор трасування 176 допомагає в цьому, якщо стовпець зберігається, не завантажуючи визначення (оскільки розширення пропускається). Таким чином, скалярна визначена користувачем функція ніколи не присутня в дереві запитів компіляції, тому паралелізм не вимикається.
Основним недоліком прапора 176 сліду (окрім того, що він є лише злегка задокументованим), є те, що він також запобігає відповідності вираження запиту до збережених обчислюваних стовпців: Якщо запит містить вираз, що відповідає персистуючому обчислюваному стовпцю, прапор 176 сліду запобігає заміні виразу на посилання на обчислену колонку.
Докладніші відомості див. У моїй статті SQLPerformance.com " Правильно збережені обчислювані стовпці" .
Оскільки питання зазначає XML, як альтернативу просуванню значень за допомогою обчислюваної колонки та скалярної функції, ви також можете розглянути використання індексу Selective XML, про що ви писали в селективних індексах XML: Не погано .