예인 경우 :
- SQL Server 2014 이상을 실행 중입니다. 과
- 추적 플래그 176이 활성화 된 상태 에서 쿼리를 실행할 수 있습니다 . 과
- 계산 열은
PERSISTED
특히 다음 버전 이 필요합니다 .
- SQL Server 2016 SP1 누적 업데이트 2
- SQL Server 2016 RTM 누적 업데이트 4
- SQL Server 2014 SP2 누적 업데이트 6
그러나 이러한 수정 사항에서 소개 된 버그 ( 2014 및 2016 및 2017 참조 )를 피하려면 다음을 적용하십시오.
추적 플래그는을 사용하는 –T
전역 및 세션 범위 DBCC TRACEON
에서 OPTION (QUERYTRACEON)
또는 쿼리를 사용 하거나 계획 지침에 따라 시작 옵션 으로 유효 합니다.
추적 플래그 176은 지속적인 계산 열 확장을 방지합니다.
쿼리를 컴파일 할 때 수행되는 초기 메타 데이터로드는 직접 참조되는 열뿐만 아니라 모든 열을 가져옵니다. 이렇게하면 계산 된 모든 열 정의를 일치시킬 수있게되므로 일반적으로 좋습니다.
불행히도 부작용으로,로드 된 (계산 된) 열 중 하나가 스칼라 사용자 정의 함수를 사용하는 경우 계산 열이 실제로 사용되지 않더라도 해당 존재 가 전체 쿼리에 대해 병렬 처리 를 비활성화합니다 .
추적 플래그 176은 열이 지속되면 정의를로드하지 않음으로써 (확장을 건너 뛰기 때문에)이를 지원합니다. 이런 식으로 스칼라 사용자 정의 함수는 컴파일 쿼리 트리에 존재하지 않으므로 병렬 처리가 비활성화되지 않습니다.
추적 플래그 176의 주요 단점 (약간 문서화는 제외)은 쿼리 표현식이 지속 계산 열과 일치하는 것을 방지한다는 것입니다. 쿼리에 지속 계산 열과 일치하는 표현식이 포함 된 경우 추적 플래그 176은 표현식이 다음으로 대체되는 것을 방지합니다. 계산 열에 대한 참조
자세한 내용은 SQLPerformance.com 기사 인 Persisted Computed Columns를 참조하십시오 .
이 질문에는 계산 열 및 스칼라 함수를 사용하여 값을 승격시키는 대안으로 XML이 언급되어 있으므로 선택적 XML 색인 : 전혀 나쁘지 않음 에서 언급 한 것처럼 선택적 XML 색인을 사용하는 방법을 살펴볼 수도 있습니다 .