リレーショナル テーブルの主キー。それらの純粋なリレーショナル テーブルの複合主キーまたは一意の主キー?
ハイパフォーマンスのためにMySQLで使用するためにどの設計をお勧めしますか? 図を参照
技術的なメリットとデメリット!
みんな、ありがとう!
リレーショナル テーブルの主キー。それらの純粋なリレーショナル テーブルの複合主キーまたは一意の主キー?
ハイパフォーマンスのためにMySQLで使用するためにどの設計をお勧めしますか? 図を参照
技術的なメリットとデメリット!
みんな、ありがとう!
それは本当にあなたがしているクエリのタイプに依存します...
追加のサロゲートを追加すると、挿入、更新、および削除ごとに 1 つのチェックではなく、2 つの一意のチェックを行うことになります。これにより、複合キーのサウンドが正しくなります。
ただし、他の外部キーでその主キーを常に参照している場合、複合オプションを使用すると、最終的に 2 倍の情報を格納することになり、結合時にさらに多くの作業を行う必要があります。これにより、単一のキーのサウンドが正しくなります。
私は@Denisに同意します、それはあなたが何をしているかに依存します。考慮すべきもう1つのことは、InnoDBが行をPK順にディスクに格納することです。のようなことをしている場合、これは非常に重要ですid1 BETWEEN a AND b
。これらの読み取りヘッドの移動は毎回約10ミリ秒であり、クエリの行が分散している場合は、合計されます。まさにこれらの理由から、必要なデータを1行に配置するように非正規化することを検討してください。
Elmasri と Navathe (in Fundamentals of Database Systems ) によると、オプション A を選択する必要があります。なぜなら、人工的な主キーは不要であり、非正規化された設計 (彼らの POV) があることを示唆しているからです。
結合テーブルの場合、たまたま著者に同意します。それ以外の場合は、実際には人工キーを使用してもまったく問題ないと思います。
結合テーブルでは、パフォーマンスへの影響が非常に大きいとは思いません。