多くのデータを保持すると予想されるテーブルを持つ Entity Framework モデルがあります。それよりも大きくなると予想されるため、int 主キーを使用することに懸念があります。この問題を回避するために Int64 を使用することを検討しています。
これが本当のキッカーです-問題のテーブルでタイプごとの継承を使用しています。したがって、Int64 を使用すると、int64 の主キーを使用する必要がある他のいくつかのテーブル (実際にはさらに追加するため、任意の数のテーブル) が存在しますが、それらが int の境界を超えて大きくなる可能性はありますかなりスリムです。非効率的なソリューションのようです。考え?
int ID とサブタイプ識別子 (おそらく char) で構成される複合キーを使用することを考えていました。このアプローチのパフォーマンスへの影響について疑問に思っています。単純な連想エンティティでない限り、私は常に代理キーを好んでいました。これらのいずれかよりも優れたアプローチはありますか? これらのうち、好ましいルートはどれですか?
アップデート:
私が検討している複合キーは自然な複合キーではないことを明確にしたいと思います。ID とサブタイプ識別子のみが含まれます。int 主キーのサイズ制限を回避する方法として使用することに興味があります。私の主な懸念事項は次のとおりです。
1) Int64 主キーを使用すると、パフォーマンス上の問題はありますか? 特に、親テーブルにのみ必要ですが、子テーブルでも使用する必要がある型継承ごとのテーブルでは。
2) 複合キー (非自然) を使用して int 主キーよりも広い範囲を実現すると、Int64 キーを使用して同じことを行うよりもパフォーマンス上の利点がありますか?