1

클러스터되지 않은 인덱스가 PFX,EFF_DT,TERM_DT 인 테이블이 있습니다. 실행 계획은 인덱스 스캔 대신 RID LookUp 힙 비용이 99 %임을 보여줍니다. 인덱스 스캔이 실행 계획에없는 이유를 알고 싶습니다. RID Lookup이 좋은 접근 방법입니다.SQL 저장 프로 시저 최적화

SELECT DISTINCT 
    ID 
    ,PFX 
    ,EFF_DT 
    ,ID1 
    ,TERM_DT 
    ,RULE 
    ,EXP_CAT 
    ,ACCT_CAT 
    ,OPTS 
    ,RULE_ALT 
    ,RULE_ALT_COND 
FROM TempMaster 
WHERE PFX = 'I004' 
ORDER BY EFF_DT DESC 
+0

인덱스에 포함 된 열만 사용하는 동안 인덱스 탐색 비용은 약 80 %입니다. – Ashu

+1

테이블 이름 뒤에 (WITH (INDEX (your_index_name)))을 시도하고 실행 계획 –

+0

을 실행하십시오. 동일한 실행 계획, 인덱스 찾기 - 0 % 및 RID LookUp - 99 % – Ashu

답변

0

나는하지 인덱스 스캔이 실행 계획에없는 이유를 알고 싶어

SQLSERVER은 비용 기반 최적화 프로그램이며 시간의 합리적인 금액에서 좋은 계획을 선택하려고합니다. .

는 RID 조회 좋은 방법입니다

RID 조회가 무작위 탐색이므로 IO 접근에 영향을 미치기 때문에 RID 조회가 항상 좋은 접근 방식은 아닙니다.

이 쿼리가 하루에 한 번 실행되면 걱정하지 않습니다.이 쿼리가 더 자주 발생하면 nonclustered 인덱스에 해당 열을 포함시켜 제거합니다.

+0

감사합니다. – Ashu

+0

@AshishSharma : 도움이 될 경우이 대답을 수락 해주세요. 자세한 내용은 여기를 참조하십시오. https : //stackoverflow.com/help/someone-answers – TheGameiswar