쿼리 계획이 쿼리에 의해 컴파일, 저장 및 검색되는 방법에 대한 제한된 지식을 통해 다중 문 쿼리 또는 저장 프로 시저가 쿼리 계획 캐시에 저장되어 향후 실행에서 쿼리에 사용될 쿼리 계획을 생성한다는 것을 이해합니다.
이 계획은 쿼리 해시가있는 쿼리 계획 캐시에서 검색됩니다. 즉, 쿼리를 편집하고 실행하면 해시가 다르고 쿼리 계획 캐시에서 일치하는 해시를 찾을 수 없으므로 새 계획이 생성됩니다.
내 질문은 : 사용자가 다중 문 쿼리의 문 중 하나 인 문을 실행하면 이미 다중 문 쿼리의 캐시에있는 쿼리 계획의 관련 부분을 사용할 수 있습니까? 해시 값이 분명히 일치하지 않기 때문에 대답이 '아니요'라고 예상하지만 다중 문 쿼리에서 각 문을 해시하는 것이 더 좋으므로 쿼리에서 개별 문을 실행하는 사용자가 사용할 수 있습니까?
나는 고려하지 않은 합병증이있을 것으로 예상합니다 (그리고 실제로 알고 싶은 것들입니다). 그러나 더 많은 공간을 차지하고 더 많은 것을 취하는 많은 쿼리 계획에 동일한 '상태 계획'을 저장할 수있는 것처럼 보입니다. CPU 및 생성 시간
그래도 내 무지를 보일 수 있습니다.
dbid
그리고objectid
둘 다 가지고is_cache_key=1
있으므로 다른 컴파일 된 객체간에 계획을 재사용 할 수 없습니다.