テーブルに列(UserNameなど)があり、一意であることを確認したい。そのため、その列に一意のキーを作成し、それをIX_Users_UserNameと呼びます。
ここで、ユーザー名に基づいてユーザーを頻繁に検索する場合は、そのフィールドのインデックスがあることを確認したいと思います。
別のインデックスを作成する必要がありますか、それとも主キーがクラスター化された一意のキーであるのと同じように、一意のキーもインデックスと見なされますか?
テーブルに列(UserNameなど)があり、一意であることを確認したい。そのため、その列に一意のキーを作成し、それをIX_Users_UserNameと呼びます。
ここで、ユーザー名に基づいてユーザーを頻繁に検索する場合は、そのフィールドのインデックスがあることを確認したいと思います。
別のインデックスを作成する必要がありますか、それとも主キーがクラスター化された一意のキーであるのと同じように、一意のキーもインデックスと見なされますか?
一意キー:一意キーは、それらが定義されている列の一意性を強制します。一意キーは、列に非クラスター化インデックスを作成します。一意キーは1つのNULL値のみを許可します。
テーブルを変更して、列に一意の制約を追加します。
ALTERTABLE作成者ADDCONSTRAINTIX_Authors_Name UNIQUE(Name)GO
MSDNからの詳細情報。
FWIW-制約によってインデックスが作成されない場合は、IX_
通常はインデックスに関連付けられていると見なされるため、名前を付けることは避けます(IX =インデックス)。
基本的に、SQL Server では、一意のインデックスによって一意の制約が実際に実現されます。
UNIQUE 制約と UNIQUE INDEX の違いは、実際には非常に微妙です。UNIQUE INDEX を作成すると、別のテーブルの外部キー制約でそれを参照できます (UNIQUE 制約を作成すると機能しません....)。
違いは何ですか?ええと - ユニーク制約は、実際にはテーブル上でより論理的なものです - 特定の列 (または列のグループ) の内容が一意であるという意図を表現したいのです。
一意のインデックス (ほとんどのインデックスと同様) は、「舞台裏」の実装の詳細です。
私の観点からは、本当に問題がない限り、常に UNIQUE INDEX を使用します。参照整合性制約の一部であることの利点は非常に有効で、場合によっては非常に役立ちます。機能的には、実際には、Unique Constraint と Unique Index の使用に違いはありません。
一意のキーは、ほとんどすべてのデータベース製品のインデックスです。そうでなければ、データベースはそれを強制するのに苦労するでしょう。値を挿入するとき、データベースは「その値はすでに存在しますか?」と答える必要があります。そのための正しい方法は、インデックスを参照することです。
テストするSQLServerが目の前にありませんが、そうでない場合はショックを受けます。