2009-08-12 3 views
0

1 시간 전 간단한 테이블 (단지 8 개의 필드)을 가지고 테이블의 인덱스 중 하나를 다시 작성했습니다.이 테이블은 0 %의 조각화로 재설정되었지만 현재는 최대 38 %입니다.인덱스가 조각화되는 이유는 무엇입니까?

테이블 자체에는 400k 개의 레코드가 있지만 색인을 다시 작성한 이후 158 개의 새로운 테이블이 삽입되었으므로 레코드는 업데이트되지 않았지만 삭제 된 항목은 두 개인 경우도 있습니다.

인덱스가 왜 조각 나야합니까?

색인은 고유하지 않으며 한 필드에만 클러스터되지 않습니다.

데이터베이스가 재 구축 될 때 인덱스의 채우기 비율을 확인 2000

감사

답변

3

SQL 서버 2005하지만 SQL Server의 호환성 수준으로 실행됩니다. 채우기 비율이 너무 높을 수 있습니다. 이 경우 색인이 다시 작성되고 새로운 행을 추가하면 조만간 페이지 분할 (조각화)이 시작될 때 색인 페이지가 가득 차게됩니다. 재 작성시 채우기 비율을 낮추면 페이지 분할이 시작되기 전에 더 많은 새 레코드가 인덱스 페이지에 삽입 될 수 있습니다. 당신은 삽입을 위해 어떤 방을 허용하지 않도록

http://msdn.microsoft.com/en-us/library/aa933139%28SQL.80%29.aspx

+0

답변 해 주셔서 감사합니다. 인덱스를 다시 작성할 때 채우기 비율을 0으로 설정했는데, 이는 sys.indexes에서 설정 한 값입니다. –

+0

채우기 비율을 0으로 사용하지 마십시오. 기본값이 보통 80이거나 그와 같은 것으로 생각됩니다. 확실하지 않습니다. 50 또는 60으로 설정할 수 있습니다 ...? – NYSystemsAnalyst

2

채우기 비율 0, 100과 동일하다. 삽입하는 경우 더 낮은 채우기 비율을 선택해야합니다.

+0

채우기 비율을 줄이면 페이지의 인덱스 행 사이에 공간이 생기지 만 새 테이블 행의 결과로 새 인덱스 행이 그 갭으로 들어가거나 결국 추가됩니다. –

+0

그것은 간격을 채 웁니다. 채우기 비율이 100이면 페이지가 완전히 채워지고 새로 삽입 된 행을위한 여유 공간이 없습니다. 따라서 이러한 행은 새로운 페이지 (a.k.a. 페이지 분할)에 놓입니다. – NYSystemsAnalyst

관련 문제