SQL Server 2008 OPTIMIZE FOR UNKNOWN 쿼리 힌트를 읽었습니다. 어떻게 작동하는지 이해합니다.이 그것을 사용하는 경우저장 프로 시저 및 알 수없는 최적화
는 그러나, 나는 곳 및 에 대한 질문이 있습니다. UDF 내에서 지정할 수 없습니다. 저장 프로 시저 내에서 지정할 수 있습니다. 그러나 다음 this MSDN 블로그 게시물 상태 : 저장 프로 시저로 쿼리를 4.Moving
은 별도의 절차 컨텍스트에 넣을 수 있고, 최적화 볼 그 값을 얻을 수있는 좋은 방법이 될 수 있습니다 (참고 :이 2000뿐만 아니라 SQL 에서 작동) 날 것으로 보인다
하여 최적의 실행 계획을 컴파일하는 SQL 서버를 돕고, "스니핑"는 저장된 프로 시저에 전달 된 매개 변수가 될 것이라고 말 할 수 있습니다. 이는 캐시 된 계획을 다시 검토하거나 다시 컴파일해야 함을 의미합니다 (해당 메커니즘을 알지 못함). 그러나이 옵션은 혼란 스럽습니다. 왜냐하면 OPTIMIZE FOR UNKNOWN에 대한 필요성을 무효화하기 때문입니다.
쿼리 힌트에 대한 MSDN 기사는 내 질문을 다루지 않습니다.
누가이 문제를 해결할 수있는 Microsoft의 포인터를 사용하여 이상적으로 대답 할 수 있습니까? 감사.
감사합니다. 따라서 SQL Server는 첫 번째 실행에서 매개 변수를 "감지하여 결과 계획을 캐싱합니다. 따라서이 계획을 이후에 스니핑하지 않으므로 새로운 계획이 보장되는 일정한 상태가 저장됩니다.나는이 권리를 얻었 는가? – IamIC
@Ed 이렇게하면 해결됩니다. 감사합니다. 나에게있어 거의 항상 힌트를 사용해야하는 것으로 보입니다. 그렇지 않으면 가장 먼저 실행 된 계획의 자비에 남겨집니다. 최적 계획에 가깝거나 그렇지 않을 수도 있습니다. 실제로 새로운 DB에서 ID 값이 낮을 가능성이 높다는 것을 고려하면 인덱스 검색이 계획에서 건너 뛸 수 있음을 거의 보장합니다. – IamIC