データベース・プライマリ・キー設計-GUIDまたはInt(int 32,int 64)をプライマリ・キーとして使用します.
データベース・プライマリ・キー設計-GUIDまたはInt(int 32,int 64)をプライマリ・キーとして使用します.
INTをプライマリ・キーとして使用するメリット:
1、小さなデータストレージスペースが必要で、4 byteしか必要ありません.
2、insertとupdateの操作時にINTを使用するとGUIDよりも性能が良いので、intを使用するとアプリケーションの性能が向上します.
3、indexとJoin操作、intの性能は最も良いです.
4、覚えやすい.
5、関数による最新値の取得をサポートする.例えば:Scope_Indentity() .
INTをメインキーに使うデメリット
1.集計表の操作が頻繁に行われると、プライマリ・キーが重複する場合があります.
2、INTデータの使用範囲に制限があります.大量のデータが存在する場合、INTの値範囲を超える可能性があります.
3、分散型ストレージのデータテーブルを処理するのは難しい.
4、データ可の自増列を使用している場合、プログラムでこのIDを使用するには、DBからこのIDを取らなければなりません.面倒
GUIDをプライマリ・キーとして使用するメリット:
1、それは唯一無二です.
2、繰り返す機会が少ない(ほとんど不可能).
3、大量のデータの挿入と更新操作に適している(プライマリ・キーの同時発生の問題をよく解決できる).
4、サーバー間のデータ統合はとても便利です.
5、データがデータベースシステムに提出されてから確定するのではなく、業務層で目標IDを知ることができる(重要な場合がある)
6、GUIDは、ハードウェア機器関連IDおよびタイムスタンプにより生成され、生成されたコンピュータハードウェア機器、時間等の情報も大まかに知ることができる
GUIDをメインキーとして使うデメリット:
1、ストレージ容量が大きい(16 byte)ため、より多くのディスクサイズを消費します.
GUIDが長すぎて、表現形式を見ると、少なくとも32ビット、長い38ビットがあり、記憶空間を浪費している.
GUID文字列は、32文字、36文字(4個の「-」分割付き)、38文字(36文字の上に「{}」で表記)の場合があります.
2、覚えにくい.joinの操作性能はintより低い.
3、最新のguidプライマリ・キーを取得する関数は内蔵されていません.
4、GUIDをプライマリ・キーとしてテーブルに追加するので、他のインデックスに追加するため、パフォーマンスが低下します.
5、GUIDは検索、外部キー関連に不利である
まとめ:
GUIDとINTの2種類のデータ型がプライマリ・キーとしてのメリットとデメリットが記載されていますが、ビッグデータ量の場合はguidをプライマリ・キーとして使用することをお勧めします.intを使用すると、最適なパフォーマンスが得られます.
データの移行、各データベースの互換性等を考慮するGUIDが適切である、
c#実現の時間順に生成できるguid(ただし、使用したことがない)
注:ネット上の皆さんの意見を集めて、自分の応用と結びつけたものです.
INTをプライマリ・キーとして使用するメリット:
1、小さなデータストレージスペースが必要で、4 byteしか必要ありません.
2、insertとupdateの操作時にINTを使用するとGUIDよりも性能が良いので、intを使用するとアプリケーションの性能が向上します.
3、indexとJoin操作、intの性能は最も良いです.
4、覚えやすい.
5、関数による最新値の取得をサポートする.例えば:Scope_Indentity() .
INTをメインキーに使うデメリット
1.集計表の操作が頻繁に行われると、プライマリ・キーが重複する場合があります.
2、INTデータの使用範囲に制限があります.大量のデータが存在する場合、INTの値範囲を超える可能性があります.
3、分散型ストレージのデータテーブルを処理するのは難しい.
4、データ可の自増列を使用している場合、プログラムでこのIDを使用するには、DBからこのIDを取らなければなりません.面倒
GUIDをプライマリ・キーとして使用するメリット:
1、それは唯一無二です.
2、繰り返す機会が少ない(ほとんど不可能).
3、大量のデータの挿入と更新操作に適している(プライマリ・キーの同時発生の問題をよく解決できる).
4、サーバー間のデータ統合はとても便利です.
5、データがデータベースシステムに提出されてから確定するのではなく、業務層で目標IDを知ることができる(重要な場合がある)
6、GUIDは、ハードウェア機器関連IDおよびタイムスタンプにより生成され、生成されたコンピュータハードウェア機器、時間等の情報も大まかに知ることができる
GUIDをメインキーとして使うデメリット:
1、ストレージ容量が大きい(16 byte)ため、より多くのディスクサイズを消費します.
GUIDが長すぎて、表現形式を見ると、少なくとも32ビット、長い38ビットがあり、記憶空間を浪費している.
GUID文字列は、32文字、36文字(4個の「-」分割付き)、38文字(36文字の上に「{}」で表記)の場合があります.
2、覚えにくい.joinの操作性能はintより低い.
3、最新のguidプライマリ・キーを取得する関数は内蔵されていません.
4、GUIDをプライマリ・キーとしてテーブルに追加するので、他のインデックスに追加するため、パフォーマンスが低下します.
5、GUIDは検索、外部キー関連に不利である
まとめ:
GUIDとINTの2種類のデータ型がプライマリ・キーとしてのメリットとデメリットが記載されていますが、ビッグデータ量の場合はguidをプライマリ・キーとして使用することをお勧めします.intを使用すると、最適なパフォーマンスが得られます.
データの移行、各データベースの互換性等を考慮するGUIDが適切である、
c#実現の時間順に生成できるguid(ただし、使用したことがない)
public static Guid GenerateGuid()
{
byte[] guidArray = Guid.NewGuid().ToByteArray();
var baseDate = new DateTime(1900, 1, 1);
DateTime now = DateTime.Now;
var days = new TimeSpan(now.Ticks - baseDate.Ticks);
TimeSpan msecs = now.TimeOfDay;
byte[] daysArray = BitConverter.GetBytes(days.Days);
byte[] msecsArray = BitConverter.GetBytes((long)(msecs.TotalMilliseconds / 3.333333));
Array.Reverse(daysArray);
Array.Reverse(msecsArray);
Array.Copy(daysArray,daysArray.Length - 2,guidArray,guidArray.Length - 6,2);
Array.Copy(msecsArray,msecsArray.Length - 4,guidArray,guidArray.Length - 4,4);
return new Guid(guidArray);
}
注:ネット上の皆さんの意見を集めて、自分の応用と結びつけたものです.