동일한 기본 구조를 가진 매우 큰 테이블이 몇 개 있습니다. 각각 하나 RowNumber (bigint)
와 DataDate (date)
열이 있습니다. 매일 밤 SQLBulkImport를 사용하여 데이터를로드하고 기록 데이터 (Enterprise가 아닌 SQL 표준이므로 분할 없음)의 "새"데이터가로드되지 않습니다.
각 데이터 비트를 다른 시스템에 다시 연결해야하고 각 RowNumber/DataDate
조합이 고유하기 때문에 이것이 기본 키입니다.
SSMS Table Designer에서 PK를 정의한 방식으로 인해 RowNumber
첫 번째와 DataDate
두 번째 로 나열됩니다 .
또한 조각화가 항상 ~ 99 %로 매우 높다는 것을 알았습니다.
이제 각 항목 DataDate
이 한 번만 나타나 므로 인덱서가 매일 페이지에 추가 할 것으로 예상하지만 실제로는 RowNumber
첫 페이지를 기준으로 색인을 생성 하고 다른 모든 것을 이동해야하는지 궁금합니다 .
Rownumber
ID 열이 아니며 외부 시스템 (슬프게도)에 의해 생성 된 int입니다. 각 시작시 재설정됩니다 DataDate
.
데이터 예
RowNumber | DataDate | a | b | c.....
1 |2013-08-01| x | y | z
2 |2013-08-01| x | y | z
...
1 |2013-08-02| x | y | z
2 |2013-08-02| x | y | z
...
데이터는로드 당 RowNumber
하나씩 순서대로 DataDate
로드됩니다.
가져 오기 프로세스는 bcp입니다-임시 테이블에로드 한 다음 순서대로 선택 ORDER BY RowNumber, DataDate
했지만 여전히 높은 조각화가 발생합니다.