2012-11-22 2 views
0

가끔 중단되어 MS SQL에서 실행되지 않는 복잡한 SQL 쿼리가있는 문제가 있습니다. 그러나 쿼리에 관련된 테이블에 대한 업데이트 통계를 실행하면 쿼리가 정상적으로 실행됩니다.쿼리가 멈추지 만 통계를 업데이트해도 문제가 없습니다.

원인에 대한 의견이나 요령이 있으십니까?

감사합니다.

+2

[이 문제] (http://sqlinthewild.co.za/index.php/2011/03/22/statistics-row-estimations-and-the-ascending-date-column/) 또는 매개 변수 스니핑. –

+0

많은 감사합니다 마틴. 나는 그것들을 조사 할 것이다. –

답변

0

SQL Server는 통계 정보를 사용하여 데이터를 필터링하고 데이터베이스 테이블에 대한 액세스를 줄이는 최적의 순서를 결정하는 "실행 계획"을 만듭니다.

이 실행 계획은 데이터베이스 캐시에 저장되며 데이터베이스가 온라인 상태 인 한 재사용됩니다. 통계는 다시 작성되지 않으며 u 리는 수정되지 않습니다.

인덱스를 업데이트하면 통계도 함께 업데이트됩니다.

결과적으로 쿼리에 대한 저장된 실행 계획이 더 이상 최적이 아니므로 결과가 더 이상 사용되지 않습니다.

인덱스를 다시 작성하기 전에 SQL Server는 테이블에 대한 사용되지 않는 잠금 및 트랜잭션도 닫을 것으로 예상합니다. 그것은 문서화되지 않은 기능입니다.

관련 문제