「ユーザー名」という列のクイックルックアップと一意性のためのインデックスを追加したいと思います。UNIQUEまたはを選択するオプションが表示されますINDEX。両方を作成する必要がありますか、それともUNIQUEを使用する必要がありますか?
私は主キーとしてユーザー名を使用していません。
「ユーザー名」という列のクイックルックアップと一意性のためのインデックスを追加したいと思います。UNIQUEまたはを選択するオプションが表示されますINDEX。両方を作成する必要がありますか、それともUNIQUEを使用する必要がありますか?
私は主キーとしてユーザー名を使用していません。
ボンネットの下のMySQLでは、属性を作成するたびに、UNIQUEそれも編集されINDEXます。一部のデータベース設計者は、UNIQUE属性を として明示的に定義するINDEXことを好みますが、どのような選択をしても結果は同じになります。
UNIQUEINDEXほとんどのデータベースに対して自動的に を作成します。したがって、あなたに答えるには、1 つだけ作成する必要がありますUNIQUE。ここで MySQLの関連スレッドを見つけることができます
テーブルの主キーは、自動的に mySql のインデックスにもなります。したがって、列をインデックスにして一意のキーにしたい場合は、次のようなテーブルを作成できます。
CREATE TABLE `users` (
`username`,
PRIMARY KEY (`username`),
UNIQUE KEY `new_mmp_id` (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
usernameしたがって、最終的には、一意のフィールド自体であるフィールドにインデックスがあります。これは、自動的にインデックスとなる主キーでもあります。自動インクリメンタル ID フィールドが必要な場合のように、テーブル内の特定のフィールドについて説明したことはありません
Should I create both, or just go with UNIQUE?
username列に一意のフィールドが必要な場合は、定義する必要があります。両方を作成します。そうでない場合は、ユーザー名をインデックスである主キーに設定します。
この記事を読むことをお勧めします http://www.xaprb.com/blog/2009/09/12/the-difference-between-a-unique-index-and-primary-key-in-mysql/
私の推測ではUNIQUE、最高のパフォーマンス ブーストが得られるだけでなくINDEX、ブーストも得られます。使用したくない唯一の理由は、またはUNIQUEを実行するたびにMySQLに一意の値のチェックを処理させたくない場合だと思います.INSERTUPDATE
両方必要ないと思います。しかし、私は専門家ではありません。