2009-10-14 3 views

답변

1

저장 프로 시저가 실행되면 컴파일되고 실행 계획은 SQL Server가 유지 관리하는 실행 계획 캐시에 저장됩니다. 기본 테이블에 중요한 변경 사항 (예 : 업데이트 된 통계, 새 색인, 재 컴파일을위한 수동 요청 등)이 없으면 저장된 실행 계획을 사용합니다.

Linq에 - 투 - SQL 임시 쿼리는 sp_executesql을 저장 프로 시저를 사용합니다. 결과적으로 SQL Server의 실행 계획 캐시에 저장되므로 동일한 쿼리 *를 여러 번 실행하면 SQL Server가 한 번 컴파일 한 다음 캐시 된 계획 만 사용하게됩니다. (* = 동일한 번호 및 동일한 유형의 파라미터와 동일 쿼리) SQL 쿼리에 LINQ 식 트리를 변환 할 때도 작동 일정량을 수행 Linq에 투 SQL 상기

. 이 오버 헤드는 다양하지만 자주 실행되는 매우 복잡한 쿼리의 경우에는 눈에. 수 있습니다.

을 반복 CompiledQuery라는 뭔가가 Linq에 - 투 - SQL SQL에 동일한 쿼리를 번역하는 비용을 절감합니다. 불행하게도 CompiledQuery 클래스는 그렇게 때문에 이러한 제한하는 것이 보통 옵션으로 배제된다 매우 간단한 쿼리에보다 그것이 더 큰 영향을 미칠 것] 복잡한 쿼리에 대한 쿼리 당 네 개의 매개 변수를 지원합니다. 그것은 또한 당신이는 SQL 서버 측 비용 비교 가치가 CompiledQuery 클래스 사용, 그래서 만약 CompiledQuery SQL 쿼리 L2S 클라이언트 측 술어 제거를 활용하지 않는 것이 주목할 가치가있다 (특히합니다. I/O의 관점에서)을하는 경우 잠재적으로 클라이언트 측을 제거 할 수있는 where 절 조건부가 있습니다 ...

관련 문제