2012-02-09 2 views
0

SQL Server 2008에서 다음 쿼리를 여러 번 실행하면 처음부터 내부 쿼리 (내 복잡한 선택 쿼리)의 결과가 캐시됩니까?SQL Server 2008 하위 쿼리 캐싱?

또는 새로운 n 및 m 값으로 매번 쿼리가 실행됩니까?

SELECT * FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY x.id) AS rowID 
    FROM (*My complicated select Query* ORDER BY id) x 
) y WHERE y.rowID BETWEEN n AND m 
+1

캐싱 결과가 상상할 수 없습니다. 아마도 쿼리 계획. 그러나 쿼리 실행 사이에 테이블이 변경되면 어떻게됩니까? 결과 집합을 안전하게 캐시 할 수는 없습니다. – Blorgbeard

답변

1

이, (단순/강제 등) 파라미터의 설정을 포함한 다양한 요인에 따라 달라집니다 캐시에 무엇을 설정, 메모리 용량, 쿼리의 복잡성, "임시 워크로드에 최적화" 계획을 얼마나 자주 순환 시키 느냐 등. "결과 캐싱"(발생하지 않음)과 "계획 캐싱 및 재사용"(가능한) 간에는 큰 차이가 있음에 유의하십시오. 결과를 캐싱하는 것은 데이터베이스 (또는이 테이블이 만들어진 파일 그룹)가 읽기 전용으로 설정되어 있지 않으면 실제로 이해가되지 않습니다.