Tak, jeśli:
- używają programu SQL Server 2014 lub nowszego; i
- są w stanie uruchomić zapytanie z aktywną flagą śledzenia 176 ; i
- kolumna obliczana to
PERSISTED
W szczególności wymagane są co najmniej następujące wersje :
- Zbiorcza aktualizacja 2 dla programu SQL Server 2016 z dodatkiem SP1
- Zbiorcza aktualizacja 4 dla programu SQL Server 2016 RTM
- Zbiorcza aktualizacja 6 dla SQL Server 2014 SP2
ALE, aby uniknąć błędu (patrz 2014 i 2016 i 2017 ) wprowadzonego w tych poprawkach, zamiast tego zastosuj:
Flaga śledzenia jest skuteczna jako –T
opcja uruchamiania , zarówno w zakresie globalnym, jak i sesji, przy użyciu DBCC TRACEON
i na zapytanie z OPTION (QUERYTRACEON)
przewodnikiem planu.
Flaga śledzenia 176 zapobiega utrwaleniu obliczanej ekspansji kolumny.
Początkowe ładowanie metadanych wykonywane podczas kompilacji zapytania zawiera wszystkie kolumny, nie tylko te, do których bezpośrednio się odwołuje. To sprawia, że wszystkie obliczone definicje kolumn są dostępne do dopasowywania, co ogólnie jest dobrą rzeczą.
Jako niefortunny efekt uboczny, jeśli jedna z załadowanych (obliczonych) kolumn używa skalarnej funkcji zdefiniowanej przez użytkownika, jej obecność wyłącza równoległość dla całego zapytania, nawet jeśli kolumna obliczeniowa nie jest faktycznie używana .
Flaga śledzenia 176 pomaga w tym, jeśli kolumna jest utrwalona, nie ładując definicji (ponieważ interpretacja jest pomijana). W ten sposób skalarna funkcja zdefiniowana przez użytkownika nigdy nie jest obecna w drzewie kompilacji zapytań, więc równoległość nie jest wyłączona.
Główną wadą flagi śledzenia 176 (poza tym, że jest tylko lekko udokumentowana) jest to, że zapobiega ona również dopasowaniu wyrażenia zapytania do utrwalonych kolumn obliczeniowych: Jeśli zapytanie zawiera wyrażenie pasujące do utrwalonej kolumny obliczeniowej, flaga śledzenia 176 zapobiegnie zastąpieniu wyrażenia przez odniesienie do kolumny obliczanej.
Aby uzyskać więcej informacji, zobacz mój artykuł SQLPerformance.com, Właściwie utrwalone kolumny obliczeniowe .
Ponieważ pytanie wymienia XML, jako alternatywę dla promowania wartości za pomocą obliczonej kolumny i funkcji skalarnej, możesz również spojrzeć na użycie Selektywnego Indeksu XML, o czym pisałeś w Selektywnych Indeksach XML: Nieźle .