同じ基本構造を持ついくつかの非常に大きなテーブルがあります。それぞれにRowNumber (bigint)
とDataDate (date)
列があります。データは毎晩SQLBulkImportを使用してロードされ、「新しい」データはロードされません-その履歴レコード(エンタープライズではなくSQL標準なので、パーティショニングはありません)。
データの各ビットは他のシステムに結び付ける必要があり、各RowNumber/DataDate
組み合わせは一意であるため、それが私の主キーです。
SSMS Table DesignerでPKを定義した方法により、RowNumber
最初とDataDate
2番目にリストされていることに気付きました。
また、私の断片化は常に非常に高い〜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
)が、依然として高い断片化が発生しています。