2013-01-07 2 views
0

아래 코드가 있습니다 .. 업데이트 열에 인덱스를 만들면 쿼리가 빨라지습니까?업데이트 열에 대한 인덱스

CREATE NONCLUSTERED INDEX tmp ON #TestTable ( 
    jobid, 
    RecordGroup, 
    RecordSubGroup, 
    OpenDate 
) 

UPDATE #TestTable 
    SET OpenDate = OB.col1 
    , OpenWrap = OB.col2 
    , OpenBalance = OB.col3 
    FROM #TestTable ST 
    JOIN JobRecordOut OB ON OB.JobId = ST.JobId 
         AND OB.RecordGroup = ST.RecordGroup 
         AND OB.RecordSubGroup = ST.RecordSubGroup 
         AND OB.RecordType = 'OB' 

DROP INDEX tmp ON #TestTable 
+0

아니요. 색인을 사용하면 업데이트/삽입 작업이 빨라지지 않습니다. 인덱스가 실제로 무엇인지, 또는 인덱스가 무엇인지 모르는 것 같습니다. 따라서 인덱스를 적용하기 전에 인덱스를 조금 읽어야합니다. create/drop index 절에서 단일 쿼리를 래핑하는 것은 * 특히 * 나쁜 생각 일 수 있습니다. 인덱스를 만드는 것은 무료가 아니며 실제로 업데이트보다 훨씬 비쌉니다. – meagar

+0

의견을 내 주셔서 감사합니다 ... 예, 색인에 새로 입하했습니다 ... – Thinna

답변

3

It ™가 있습니다.

인덱스는 옵티마이 저가 인덱스를 결정한다고 가정 할 때 레코드 찾기 속도를 높이기 위해 작동합니다. 색인을 가지고 있다고해서 색인이 사용되는 것은 아닙니다. 더 자세한 정보를 제공 할 수 있도록 작성되었을 때 아무 데이터베이스도 지정하지 않았습니다.

인덱스가 추가/변경되는 값과 관련된 경우 삽입/업데이트 작업이 느려집니다. 이것이 인덱스를 유지해야하는 이유입니다. 인덱스를 조각내어 전체 재구성이 아니라면 "defraging"이 필요할 수 있습니다. 때로는 색인을 완전히 재현하는 것이 비용면에서 효율적입니다. 이는 데이터 및 데이터의 양에 따라 다릅니다.

인덱스에 관해서는 & 테스트를 직접 해봐야합니다. 그들에게는 "은총"/ 마법의 답이 없습니다.

관련 문제