私は、mysqlに(近い将来に)何百万もの投稿を保存しなければならないテーブルを持っています。ここでは単純化された構造は、(私の質問は、それに基づいているので、私は私の主キーを示すものではありませんでした)です:この状況で自然キーと複合キーの違いは何ですか
CREATE TABLE `posts` (
`post_id` INT NOT NULL AUTO_INCREMENT,
`user_id` BIGINT(20) NOT NULL,
`title` VARCHAR(100),
`content` TEXT
) ENGINE = MyISAM;
私の質問は:私のキーを定義するための最良の方法は何ですか?
それだけで、プライマリおよび保存する必要のあるレコードの量を考慮した固有のキーとして「
post_id
」をINGの私のAUTO_INCREMENT
を使用するのが最適ですか?「
post_id
」と「user_id
」の両方をプライマリキーとユニークキーとして使用する複合キーとして使用する必要がありますか?これが最善の場合、他のテーブルで外部キーとしてどのように使用するのですか?これらのテーブルの列として単に追加するだけですか?
あなたも喜ばでしそれぞれ使用するENGINE上、おそらくいくつかのアドバイスの長所と短所(もしあれば)を示しています。私はInnodbが2番目のオプションを使うと最高になると思います。知りません。
あなたposts
テーブルに子テーブルを持っている場合は、あなたが必要になります。主キーまたはpost_idのを使用して複合キーとUSER_IDは、基本的には次に降りてくるだろうとあなたは、自動インクリメントフィールドを使用するかどうか
[テーブルの主キーのベストプラクティスは何ですか](http://stackoverflow.com/questions/337503/whats-the-best-practice-for-primary-keys-in-tables) – millimoose
理論的には、すべての列が簡単にハッシュ可能(整数など)であれば、複数列の索引にアクセスする場合には、単一列の索引に比べてパフォーマンスが大幅に低下すべきではありません。 – millimoose
前回の回答が見つかった可能性があります。http://stackoverflow.com/questions/4419499/mysql-nosql-help-me-to-choose-the-right-one-on-a/4421601#4421601 –