0

다음 질문이 있습니다.
하나씩 차례로 두 개의 쿼리를 수행하고 있습니다.SQL Server 2012에서 캐싱 및 쿼리 수행 -이 캐시를 어떻게 사용할 수 있습니까?

첫째 :

SELECT SomeColumn 
FROM 
SomeFunction(id) 
WHERE 
A and B and C 
CROSS JOIN 
X 

둘째,이 두 문제는 동일한 "부속"가

SELECT SomeColumn 
FROM 
SomeFunction(id) 
WHERE 
A and B and C 
CROSS JOIN 
Y 

당신이 유일한 차이점은 YX 부품 사이에 볼 수 있듯이. 쿼리의 첫 번째 부분은 정확히 동일합니다.
SQLServer에서 캐시하고 두 번째 쿼리가 처음 것보다 빠를 수 있습니까? 질문 : SQL Server의 캐싱은 언제 어떻게합니까? 내가 먼저

SELECT SomeColumn 
FROM 
SomeFunction(id) 

을 인출 한 후 제 1 및 제 2 질의

컨텍스트는 MyBatis로 봄 부팅입니다에서 사용할 의미, 수동으로 할 수 있지만, 여기에 중요하지 않습니다, 나는 생각한다. 당신이 쿼리 아래 말을 발행 할 때

+1

을 데이터를 읽을 수 있다는,이 여기에 잘못된 질문을합니다. 쿼리가 * 빨리 실행됩니까? 그렇다면 특정 캐시인지 아니면 다른 의미인지 여부가 중요합니까? 그리고 그렇지 않다면, 캐싱에 특히 집중하지 않고, 속도를 높이기위한 메커니즘을 구체적으로 살펴보아야하지 않습니까? (심지어 쿼리가 심지어 * 유효한 *, 심지어는 우리가 * 실행할 수 있도록 샘플 데이터가 있으면 도움이 될 것입니다) –

+0

실행 계획을 활성화하고 실행 시간 결과를 확인하는 것은 어떻습니까? – tire0011

답변

0

있는 페이지 (8킬로바이트)는 논리적 ID로 저장되어있는 특정 테이블에 속하는 SQLServer.Pages 스토리지의 기본 단위입니다 ..

그래서

select * from table where id=2 

은하자 가정, id = 2는 두 페이지에 저장됩니다. 그들은 캐시에 있다면, 그들이 캐시에 있다면, 그들은 캐시에 가서 읽고 것입니다 .SQL는 먼저 확인합니다 ..

그 두 페이지로 캐시에있을 것입니다 오래 기억력이 없습니다. 메모리가 부족하면 SQLServer가 시작됩니다. 대략 번역 LRU 알고리즘을 기반으로 메모리에서 캐시 된 페이지를 퇴거 덜 사용 된 페이지

에게로

그래서 기회는 다음 쿼리 당신이 것 같아요 .. 디스크 나 메모리에서

+0

그래서 기회가있을뿐입니다. 그래서 나는 SQLerver 캐싱에 의지해서는 안됩니다 –

+0

쿼리를 느리게 실행하는 경우 이것을 무시하고 추가 성능 측면을 확인할 수도 있습니다 – TheGameiswar