뷰를 사용하는 쿼리에서 WITH NOLOCK 테이블 힌트 사용-뷰 내에서 전파됩니까?
SQL Server의 뷰에서 "WITH NOLOCK"쿼리 힌트를 사용하면 뷰 정의의 원시 테이블에 NOLOCK이 사용되지 않더라도 해당 힌트가 뷰 정의 자체에 전파됩니까? 이것이 필요한 이유는 때때로 지원 담당자가 시간이 많이 걸리는 쿼리를 수행하려고하지만 애플리케이션 자체 내의 뷰를 사용하는 모든 쿼리에 대해이 잠금을 강제하지 않기 때문입니다.
예, NOLOCK은 뷰 정의에 사용되는 테이블에 전파됩니다 (적어도 SQL Server 2005에서는).
MSDN의 테이블 힌트 를 참조하십시오 .
SQL Server 2005에서는 모든 잠금 힌트가 뷰에서 참조되는 모든 테이블과 뷰로 전파됩니다. 또한 SQL Server는 해당 잠금 일관성 검사를 수행합니다.
하나,
테이블에 계산 된 열이 포함되어 있고 계산 된 열이 다른 테이블의 열에 액세스하는 식이나 함수에 의해 계산되는 경우 테이블 힌트는 해당 테이블에서 사용되지 않습니다. 이는 테이블 힌트가 전파되지 않음을 의미합니다. 예를 들어 NOLOCK 테이블 힌트는 쿼리의 테이블에 지정됩니다. 이 테이블에는 다른 테이블의 열에 액세스하는 식과 함수의 조합으로 계산 된 계산 열이 있습니다. 식과 함수에서 참조하는 테이블은 액세스 할 때 NOLOCK 테이블 힌트를 사용하지 않습니다.
인덱싱 된 뷰를 사용하는 경우 특수한 경우도 있으므로 좀 더 읽어보고 싶을 수 있습니다.
자세한 내용은 해상도보기를 참조하십시오 .
Rory의 탁월한 대답을 보완하기 위해.
그는 "예, NOLOCK은 뷰 정의에 사용되는 테이블로 전파됩니다 (적어도 SQL Server 2005에서는) "라고 썼습니다 .
실제로 이것은 SQL 2000에서도 작동합니다. BOL에서 :
select_statement는 SELECT 문을 사용하므로 FROM 절에 지정된대로 및 힌트를 사용하는 것이 유효합니다. 자세한 내용은 FROM 및 SELECT를 참조하십시오 .
'Development Tip' 카테고리의 다른 글
Facebook Graph API 2.0에서 사용자 이름 필드 가져 오기 (0) | 2020.12.25 |
---|---|
Eclipse Luna 어두운 테마, 코드 편집기 흰색 (0) | 2020.12.25 |
Haskell 상태 모나드를 사용하면 코드 냄새가나요? (0) | 2020.12.25 |
Java EE 웹 애플리케이션에서 WEB-INF는 무엇을 의미합니까? (0) | 2020.12.25 |
IEqualityComparer (0) | 2020.12.25 |