2011-02-09 2 views
0

私は、mysqlテーブルを設定しようとしています。テーブルの列が一意であるとマークされている場合、インデックスされていることを意味します。

id (integer, auto increment, primary) 
username (varchar 32, unique) 
email (varchar 32, unique) 

私はテーブルに重複したユーザー名や電子メールアドレスを許可したくありません。たとえば、起動時に、提供されたユーザー名や電子メールが既にテーブルに存在するかどうかをテストします。もしそうなら、私はサインアップをキャンセルします。

ユーザー名とメールアドレスの列を「一意」としてマークしても、インデックスが作成されていることを意味しますか?私は、できるだけ効率的にチェック

おかげ

答えて

1

はい、彼らがインデックス化され、既に存在して操作を行うことができるように私は彼らがインデックス化されるようにしたいと思います。これは、データベースが既に存在するチェックを可能な限り効率的に行う方法でもあります。

0

はい、暗黙的にインデックスを作成します。

http://dev.mysql.com/doc/refman/5.1/en/create-table.html

UNIQUEインデックスは、インデックス内のすべての値が明確でなければならないというような制約を作成します。既存の行と一致するキー値を持つ新しい行を追加しようとすると、エラーが発生します。すべてのエンジンについて、UNIQUE索引は、NULLを含むことができる列に対して複数のNULL値を許可します。

関連する問題