1

リレーショナル テーブルの主キー。それらの純粋なリレーショナル テーブルの複合主キーまたは一意の主キー?

ハイパフォーマンスのためにMySQLで使用するためにどの設計をお勧めしますか? 図を参照

技術的なメリットとデメリット!

みんな、ありがとう!

4

3 に答える 3

2

それは本当にあなたがしているクエリのタイプに依存します...

追加のサロゲートを追加すると、挿入、更新、および削除ごとに 1 つのチェックではなく、2 つの一意のチェックを行うことになります。これにより、複合キーのサウンドが正しくなります。

ただし、他の外部キーでその主キーを常に参照している場合、複合オプションを使用すると、最終的に 2 倍の情報を格納することになり、結合時にさらに多くの作業を行う必要があります。これにより、単一のキーのサウンドが正しくなります。

于 2011-06-16T12:52:19.687 に答える
1

私は@Denisに同意します、それはあなたが何をしているかに依存します。考慮すべきもう1つのことは、InnoDBが行をPK順にディスクに格納することです。のようなことをしている場合、これは非常に重要ですid1 BETWEEN a AND b。これらの読み取りヘッドの移動は毎回約10ミリ秒であり、クエリの行が分散している場合は、合計されます。まさにこれらの理由から、必要なデータを1行に配置するように非正規化することを検討してください。

于 2011-06-16T13:23:16.643 に答える
1

Elmasri と Navathe (in Fundamentals of Database Systems ) によると、オプション A を選択する必要があります。なぜなら、人工的な主キーは不要であり、非正規化された設計 (彼らの POV) があることを示唆しているからです。

結合テーブルの場合、たまたま著者に同意します。それ以外の場合は、実際には人工キーを使用してもまったく問題ないと思います。

結合テーブルでは、パフォーマンスへの影響が非常に大きいとは思いません。

于 2011-06-16T12:53:37.283 に答える