2011-12-04 10 views
4

プライマリキーはデータベーステーブルの最初のフィールドである必要がありますか?プライマリキーの場所

名前の後にIDを置くとクエリが遅くなるのですか?

CREATE TABLE users 
(
    name TEXT NOT NULL, 
    id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    site INTEGER NOT NULL, 
    ... 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 
+0

あなたの思考を少し調整しようとするのと同じように、主キーはパフォーマンスとは関係のない論理的な制約です。しかし、ほとんどのRDBMSでは一意のインデックスを実装して主キーの制約を適用しています。この索引はパフォーマンスに影響する可能性がありますが、他の索引を使用して問合せに影響を与える可能性があります。主キーは自動インクリメント整数でなくてもかまいません(ほとんどのデータベースではそれをそのまま使用します)。 –

答えて

2

私は思うのクエリが遅く作ります

"テーブルごとに1つのAUTO_INCREMENT列しか指定できません。索引付けする必要があり、DEFAULT値を持つことはできません。AUTO_INCREMENT列は、正の値のみを含む場合にのみ正しく機能します。負の数は非常に大きな正の数を挿入するものとみなされます。これは精度の問題を避けるためです数字が肯定から否定に "折り返され"、また、誤って0を含むAUTO_INCREMENT列を取得しないようにするために、

したがって、テーブル内のプライマリキーの位置に制限はありません。

このヘルプが必要です。

4

使用/データベースの最初のフィールドとして、主キーを配置する一般的な慣習ですが、主キーとして2番目のフィールド(id)を定義した場合、それは問題ではない、それは文句を言わない

関連する問題