この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 3812|答える: 2

[出典] [Turn] (MSSQL) SQL Serverデータベースのintおよびguidによるプライマリキー比較

[リンクをコピー]
掲載地 2023/06/06 22:17:40 | | |
要件:最近の面接で、SQL ServerのデータベースintとGUIDがメインキーであることの違いについて尋ねられました。どちらもメリットとデメリットがありますので、実際のビジネス状況に応じて検討してください

原文1ハイパーリンクのログインが見えます。

INTを主キーとして使う利点:

1. 必要なデータストレージはわずか4バイトです。

2. INTを用いた挿入および更新操作の性能はGUIDよりも優れているため、intを使用することでアプリケーションの性能が向上します。

3. インデックスおよび結合操作、intが最も優れたパフォーマンスを示します。

4. 覚えやすい。

5. Scope_Indentity()のような関数を通じて最新の値を取得するサポート。

INTを主キーとして使う欠点

1. テーブルのマージ操作が頻繁に行われる場合、主キーの重複が生じる可能性があります。

2. INTデータの使用範囲には制限があります。 データ量が多い場合はINT値の範囲を超えることがあります。

3. 分散保存データテーブルの処理が困難です。

GUIDを主キーとして使用する利点:

1. それは唯一無二である。

2. 重複の機会がほとんどありません。

3. 大量のデータに対する挿入および更新操作に適しています。

4. クロスサーバーのデータマージは非常に便利です。

GUIDを主キーとして使う場合の欠点:

1. ストレージ容量が大きい(16バイト)ため、より多くのディスクサイズを消費します。

2. 覚えにくい。 結合操作の性能はintよりも低いです。

3. 最新生成されたGUIDプライマリキーを取得する組み込み関数はありません。

4. 主キーとしてのGUIDはテーブル上の他のインデックスに追加されるため、パフォーマンスが低下します。

概要:

上記では、GUIDおよびINTデータ型を主キーとして使う利点と欠点を挙げています。 大量のデータ量の場合は、GUIDを主キーとして使うことが推奨されていると思います。 一方intを使うと最高のパフォーマンスが得られます


コメント:使用法順序付けGUIDのパフォーマンスが大幅に向上します

原文2ハイパーリンクのログインが見えます。

恒等はホール型型であり、十進法がありません。十進法の定義なし、二進法は許容されます。

GUIDは固定2進数(16)で、16バイトです

単位は増減され、GUIDはランダムなので、データが挿入されるときに前者は断片を生成しませんが、後者は生成します。また後者は順序が乱れているため、挿入時に順序を調整しなければならないため、性能面では前者の方が一般的に優れています.

大量の情報は通常テーブルに分割されるため、多くの場合は同一性の方が適しています

主キーの意味については、設計時の考え方によります。データ処理自体の場合、主キーは意味のあるものである必要はありません。もし主キーにビジネス意味を含める必要があるなら、同一主キーはもちろん意味を持ちませんが、一般的にはビジネス意味とデータ処理を分けた方が良いです。ビジネスは常に変化しています。テーブルのメインキーに意味を持ち込みたい場合は、ビジネスが変わるので、テーブル構造をさらに調整する必要があります。

原文3ハイパーリンクのログインが見えます。

1. データ移行が頻繁に行われるシステムでは、Guidの使用が推奨されます。 また、対応する外部キーフィールド、すなわち結合クエリに使われるフィールドにクラスタ化されていないインデックスを追加することは、パフォーマンス向上に大きな利点をもたらします。 ここで条件のフィールドは、クラスタリングされていないインデックスにも適宜追加できます。

2. Guid型を主キーとして使用する際、データ型はuniqueIdentifierであるべきであり、必ず覚えておくべきです主キーの「キャンセル」を総合指数

3. 移行不要なシステムや小規模なシステムでは、intを主キーとして使用することが非常に便利であり、効率の向上も一定の見方があります。

(終わり)




先の:ASP.NET コア(20) オープンリダイレクト攻撃を防ぐ
次に:.NET Coreプログラムの多言語読み書きリソースファイル(.resx)
 地主| 掲載地 2023/06/06 22:42:46 |
SequentialGuidValueGeneratorは、Microsoft SQL Serverのクラスタキーやインデックスで使用できるように最適化された逐次Guid値を生成し、ランダムな値よりも優れたパフォーマンスを実現します。 これはSQL ServerのGuid列が追加された際に生成されるデフォルトのジェネレーターセットです。

ハイパーリンクのログインが見えます。


Entity Framework CoreのシーケンシャルGUIDはシーケンシャルでない場合もあります

ハイパーリンクのログインが見えます。
 地主| 掲載地 2024/01/27 11:07:29 |
[MSSQL]SQL SERVERは、主鍵集約インデックステストとしてGUIDと未順序GUIDを順序付けていました
https://www.itsvse.com/thread-10607-1-1.html
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com