3

대개 꽤 빨리 (거의 몇 초) 실행되는 저장 프로 시저가 있지만 동일한 매개 변수가있는 동일한 proc 파일을 실행하는 데 몇 분이 걸리는 이상한 날이 있습니다. 그러나이 시점에서 색인을 조각 모음하면 초 이내에 다시 시작됩니다.나쁜 계획 또는 조각난 인덱스로 인해 MS SQL 쿼리가 느립니다.

잘못된 실행 계획 또는 조각난 인덱스가 원인 일 수 있습니까?

그렇다면이 절차를 실행 계획이나 조각화 된 인덱스에 의존하지 않게 만들 수있는 방법이 있습니까? 사전에

감사합니다,

조셉
+1

다시 컴파일하면 실행해야합니다. 당신은 또한 당신의 절차를 포함해야합니다. –

+0

감사합니다. 내가 한 번 시험해 보도록 하렴. –

+0

이 SP에 대한 자세한 내용을 제공해주십시오. 모든 코드, 코드, 알고리즘, 매개 변수는 더 많은 힌트를 줄 수 있습니다 ... –

답변

4

글쎄, 당신의 SP에 따라,이 솔루션은 이러한 옵션을 축복하는 될 수 있습니다

1/WITH RECOMPILE 하루를 절약 할 수있다. 이렇게하면 SP를 다시 컴파일하여 총 실행 시간을 늘릴 수 있지만 최상의 실행 계획이 보장됩니다.

2/KEEPFIXED PLAN도 옵션이 될 수 있습니다.

통계적 관점에서 "대표적인"매개 변수 세트가있는 경우를 대비하여 시도해 보려면 OPTIMIZE FOR을 사용해보십시오.

4/관련된 테이블과 인덱스의 조각화 수준을 모니터링합니다. SP에서 사용하는 테이블을 많이 업데이트하는 명령문이 있는지 확인하십시오. 예인 경우 update statistics (UPDATE STATISTICS <tablename>;)

5/매개 변수 스니핑이 근본 원인 일 수 있습니다.

세부 정보로 이동하여 list of causes of recompilations을 볼 수 있습니다.

+0

감사합니다 Mihai, 나는이 선택권을 더 탐구 할 것이다. –

0

짧은 답변 : 아니오. SQL Server는 성능을 높이기 위해 실행 계획과 인덱스를 사용합니다.

길게 대답 : 어쩌면. 색인을 조각 모음 한 직후에 성능이 향상된다면 가장 먼저 질문하게 될 것입니다 : 어떤 색인이, 그리고 왜 조각화되어 있습니까? 고유 식별 자에 클러스터링합니까? 당신의 통계는 최신입니까? 실행 계획은 어떻게 생겼습니까?

+0

미안하지만, 저는 초보자입니다. –

+0

알아낼 방법을 안내해 주시겠습니까? –

관련 문제