2012-02-22 15 views
22

私のテーブルには一意のフィールドが1つあります。そのフィールドをすばやく検索する必要があります。インデックスを作成する必要がありますか?Mysql:一意のフィールドはインデックスである必要がありますか?

一意のフィールドとインデックスフィールドの検索は、速度やリソースの使用状況によって異なりますか?

+0

read:http://explainextended.com/2009/04/23/making-an-index-unique/ – diEcho

答えて

36

ですいいえ、もう一度インデックスを作成する必要はありません。 UNIQUE KEYを指定すると、列のインデックスが作成されます。したがって、同じタイプのの他のインデックス付き列(例:PRIMARY KEY)とのパフォーマンスの差はありません。

ただし、タイプが異なる場合は、パフォーマンスの差はほとんどありません。

+1

ok many tks:D。ユニークキーと検索時のインデックス付きキーの間のパフォーマンスの違いは何ですか? – TomSawyer

+1

@Tom両方のインデックスが付いていても違いはありません。私の答えをもう一度読んでください。 –

5

すべてUNIQUEフィールドは、定義により、UNIQUE INDEXで索引付けされています。これは、検索可能なアクセス・パスの中で最も高速です。

5

フィールドがUNIQUEである必要がある場合は、PRIMARY KEYまたはUNIQUE INDEXのいずれかにする必要があります。

UNIQUE INDEXINDEXの間のパフォーマンスは、どちらも同じアルゴリズム、つまりハッシングまたはb-treeを使用するので、選択するときに違いはありません。このようなBツリーなどのアルゴリズムがより効率的に要求された行(複数可)を取得することができますようUNIQUE指標、特に数値すなわちINT 1で、それは重複が含まれているインデックスより高速になりますちょうどこと