データベース・プライマリ・キー設計-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(ただし、使用したことがない)
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);
}

注:ネット上の皆さんの意見を集めて、自分の応用と結びつけたものです.