MySQL で自動インクリメントを維持し、主キーとして別の列を使用する
MySQL で、自動インクリメント列を持つテーブルを作成する場合の場合、デフォルトの動作では、その列が主キーにもなります。ただし、クエリが主に別の列を使用して行を識別する場合、この動作はパフォーマンスの問題を引き起こす可能性があります。
次のシナリオを考えてみましょう。自動インクリメント主キーとして id という名前の列と、別の という名前の列を持つテーブルを作成します。 memberid は一意であり、メンバーを識別するためにクエリで使用されます。この場合、パフォーマンス上の理由から、memberid を主キーとして使用することが理想的ですが、そうするとエラーが発生します:
1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key
これに対処するための最良の解決策は、次の ID 列を保持することです。 memberid を主キーとして定義しながら、自動インクリメント機能を維持します。これは、以下に示すように、id 列にインデックス (キー) を作成することで実現できます。
CREATE TABLE members ( id int(11) UNSIGNED NOT NULL AUTO_INCREMENT, memberid VARCHAR( 30 ) NOT NULL , `time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP , firstname VARCHAR( 50 ) NULL , lastname VARCHAR( 50 ) NULL , PRIMARY KEY (memberid) , KEY (id) --- or: UNIQUE KEY (id) ) ENGINE = MYISAM;
このアプローチにより、memberid をプライマリとして使用しながら、パフォーマンスを目的として自動インクリメント列を維持できます。効率的なクエリのためのキー。
以上がMySQL で自動インクリメントを維持しながら、異なるカラムを主キーとして使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。