質問

一意制約はデフォルトでインデックスですか?そうでない場合、一意の制約を SELECT ... WHERE 句で使用すると、インデックス付き列と同じパフォーマンス結果が得られますか?

ありがとう

役に立ちましたか?

解決

一意の制約は、必ずインデックスです。通常は、「UNIQUE INDEX」として定義します。一意の制約を効率的に実装するには、いずれの場合もインデックスが必要になるため、インデックスを使用しても不利ではありません。

他のヒント

実際には、制約はインデックスとは非常に異なります。MySQLは一意性を強制するようになっているというだけです。ただし、インデックスは(一意の場合もありますが)ハードディスクの物理的な順序、または列の効率的な検索を可能にする追加の構造(通常はツリー)に関するものです。

ただし、これをすべて(通常はクラスター化された)一意のインデックスを定義する主キーと混同している可能性があります。

一意制約は、何か(属性値の組み合わせなど)がリレーション全体(" table")のスコープ内で一意でなければならないという事実を表現する方法です。

これは、論理設計のレベルです。

インデックスは、このような制約を実施するのに役立つ可能性のある手段です。

これは物理設計のレベルです。

一部のDBMS製品は、UNIQUE制約などの特定の論理設計構造の存在から、何らかのインデックスの存在など、特定の物理設計構造を推測する場合があります。他の人はそうではないかもしれません。

UNIQUEは実際にはインデックスの制約です 。そのため、UNIQUEは一意性を適用するフィールドにインデックスがあることを意味します。

一意制約の使用を開始する前に、主キー制約を確認してください。

主キー制約は、一意制約と非NULL制約の宣言に相当します。主キーに複数の列がある場合、各列は非NULL制約を取得しますが、一意制約は一緒に取得されるすべての列に適用されます。

主キーを宣言すると、DBMSがインデックスを作成します。必要に応じてインデックスを削除できますが、DBMSがテーブルスキャンを実行して一意性をチェックすると、ひどいパフォーマンスが得られます。

主キー制約はエンティティの整合性を強制し、参照(外部キー)制約は参照整合性を強制します。これらを組み合わせることで、データの整合性を確保するのに役立ちます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top