2017-04-26 18 views
0

大きなデータセットのサイズとパフォーマンスの問題のため、UUIDは主キーとしてはお勧めできません。小さなSQLテーブルの主キーとしてUUIDを使用

しかし、いくつかのトップレベルの組織テーブルでそれを使用することは、全く有害でしょうか?例えば。 組織またはブランチ、いくつかのエントリがありますか?

+0

GUIDを意味しますか?要するに、いいえ。しかし、それをトランザクションテーブルに反映させる必要があるかもしれません。また、あなたはあなたのDBに一貫性を保つ必要があります。 PKはアイデンティティまたはGUIDであり、ミックスではありません。あなたがGUIDに正当な理由がある場合、つまりレコードがユニバーサルにユニークでなければならない場合、是非それを使用してください。しかし、データを適切にモデル化しないようにしているのであれば、設計上の習慣が悪いです。 –

+0

私は質問の前提に同意しません。ディスクスペースは安価であり、主キーとしてUUIDの索引付けとパフォーマンスの向上が必要です。 – ceejayoz

+0

@ Nick.McDermaid UUIDとGUIDは同じものです。 https://en.wikipedia.org/wiki/Universally_unique_identifier – ceejayoz

答えて

1

UUIDの代わりにserialを使用することをお勧めします。なぜ整数はUUIDよりも好ましいのですか?

  • これらは、より少ないスペースを占有します。これはベーステーブルの中ではわずかな問題ですが、外部キーにとっては大きな問題です。
  • 整数は読みやすく、覚えやすくなります。

多くのデータベースでは、テーブルは主キーを使用して物理的に順序付けられています。このようなデータベースでは、UUID上の新しい挿入物はほとんどの場合、レコード間に移動しますが、これは高価です。しかし、Postgresはクラスタ化インデックスをサポートしていないので、基礎となるデータは順序付けされません。

整数に欠点があります。

  • 大きなint型はかなりその問題を解決するが、有限の数があります。
  • これらは、挿入順序情報をエンコードします。実際には、これは肯定的でも否定的でもあります。

スペースの使用以外は、スタティックテーブルにUUIDを使用することに大きな害はないと思います。私は整数を強く好んでいます。整数を計算するのが難しい状況では、UUIDに頼るだけです。

+0

@a_horse_with_no_name 。 。ありがとうございました。 –

関連する問題