0

누군가가이 기능이 작동하는 이유를 설명해주십시오. 다음은 풍경입니다. 저장 프로 시저가 있는데 느리게 실행되기 시작합니다. 그런 다음 매개 변수를 선택하고 해당 값을 저장하기 위해 변수를 선언하고 proc에서는 매개 변수 대신 선언 된 변수를 사용합니다. proc은 상당히 빠르게 진행될 것입니다.SQL Server 2005의 캐싱 계획 둘러보기

캐시 된 계획 및 통계와 관련이 있다고 생각하지만 확실하지 않습니다. 캐시 된 계획이 데이터의 현재 상태와 다른 데이터의 과거 상태에 최적화되도록 데이터베이스가 커지고 변경됨에 따라 통계가 오래된 상태입니까?

감사합니다.

답변

4

당신이 일반적으로 말하는 것은 parameter sniffing이며, SQL Server의 유일한 문제인 것 같습니다. Oracle IME에서는 사용하지 않았고 MySQL에서도이 문제를 인식하지 못했습니다. 내가 준 링크는 문제를 잘 설명합니다.

옵티마이 저가 사용하는 통계가 데이터 변경과 동기화되지 않았 음을 염려하십시오. UPDATE STATISTICS도 occaissionally 실행해야 할 수도 있습니다.

+0

OMG - 답변 주셔서 감사합니다. 귀하의 링크를 통해 내가 찾던 설명을 들려주었습니다. – MikeMalter

0

ddl을 변경하면 저장 프로 시저 실행 계획이 캐시에서 제거되지만 OMG Pony는 최적화 프로그램이 데이터 변경 내용을 추적하지 않는다고 말합니다.

문제를 해결하는 한 가지 방법은 재 컴파일 옵션을 사용하는 것입니다. 절차를 실행할 때마다 절차가 컴파일됩니다. sp_recompile을 주기적으로 실행하여 재 컴파일을 위해 저장 프로 시저를 표시 할 수도 있습니다.

+0

IIRC 재 컴파일은 또한 내 질문에 응답 할 시간을내어 주셔서 감사합니다. –

+0

Giorgi, 어려운 구문 분석을 보장하는 쿼리 계획을 내 보냅니다. – MikeMalter