web-dev-qa-db-ja.com

MySQL:一意のフィールドはインデックスである必要がありますか?

テーブルにUNIQUEフィールドが1つあり、それをすばやく検索する必要があります。インデックスを作成する必要がありますか?

一意のフィールドとインデックス付きフィールドの検索は、速度やリソース使用量が異なりますか?

35
TomSawyer

いいえ、再度インデックスを作成する必要はありません。 UNIQUE KEYを指定すると、列にインデックスが付けられます。したがって、同じタイプの他のインデックス付き列(PRIMARY KEYなど)とのパフォーマンスに違いはありません。

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

51
Shiplu Mokaddim

すべてのUNIQUEフィールドは定義上UNIQUE INDEXでインデックス付けされています。これは、検索可能な最速のアクセスパスでもあります。

9
Eugen Rieck

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

UNIQUE INDEXINDEXのパフォーマンスについては、どちらも同じアルゴリズム、つまりハッシュまたはbツリーを使用するため、選択しても違いはありません。 UNIQUEインデックス、特に数値、つまりINTインデックスを使用すると、b-treeなどのアルゴリズムがより効率的にに到達できるため、重複を含むインデックスよりも高速になります。要求された行