必ずする必要があります サロゲート INT IDENTITY()
を導入する 主キー!!INTはすでに最大20億行を提供する可能性があります-それで十分ではありませんか??
SQL Server のこの主キー/クラスター化キーのサイズは最大 64 バイト (INT の場合は 4 ではなく) になります。これにより、クラスター化インデックスとすべての非クラスター化インデックスが認識できないほど肥大化します。クラスタリング キー全体 (8 列すべて) が、そのテーブルのすべての非クラスタ化インデックスのすべてのページに含まれます。これは、確実に大量のスペースを無駄にします。
したがって、特定のインデックス テーブルでは、サロゲート INT クラスター化キーを使用して最大 16 倍のエントリを持つことになります。つまり、I/O が大幅に減り、インデックス ページの読み取りに費やされる時間が大幅に短縮されます。
そして、そのテーブルへの外部キー関係を確立しようとすることを想像してみてください....どの子テーブルにも 8 列 すべてが必要です。 主キーを外部キー列として、すべての結合で 8 つの列すべてを指定します。なんて悪夢でしょう!!
7,800 万行の場合、クラスタリング キーを INT IDENTITY に変更するだけでも、1 行あたり最大 60 バイト節約できます。それだけで、最大 4 GB のディスク容量 (およびサーバーの RAM 使用量) になります。そして、それは非クラスター化インデックスの節約を計算することすら始めていません........
そしてもちろん、はい、VARCHAR(10) を INT または BIGINT に変更します。数値の場合は、フィールドの型を数値にします。VARCHAR(10) のままにしても意味がありません。しかし、それだけで速度やパフォーマンスに大きな違いが生じるわけではありません。データの操作がはるかに簡単になるだけです (値の比較などで、常に数値型にキャストする必要はありません)。 /P>
マーク