4

Ist eine eindeutige Einschränkung ein Index standardmäßig? Wenn nicht, hat eine eindeutige Integritätsbedingung die gleichen Leistungsergebnisse wie eine indexierte Spalte, wenn sie in der SELECT ... WHERE-Klausel verwendet wird?Eindeutige Einschränkung in MySQL

Dank

Antwort

4

Eine eindeutige Einschränkung ist notwendigerweise ein Index. Normalerweise definieren Sie es als "UNIQUE INDEX". Ein Index wäre in jedem Fall erforderlich, um eine eindeutige Beschränkung effizient zu implementieren, so dass ein Index kein Nachteil ist.

2

Eine Einschränkung ist tatsächlich sehr verschieden von einem Index: Es sagt nur, dass MySQL Einzigartigkeit für Sie erzwingen soll. Ein Index (obwohl er eindeutig sein kann) handelt von der physischen Reihenfolge auf Ihrer Festplatte oder von zusätzlichen Strukturen (normalerweise ein Baum), die eine effiziente Suche in der Spalte ermöglichen.

Sie könnten jedoch all dies mit Primärschlüsseln verwechseln, die einen (normalerweise geclusterten) eindeutigen Index definieren.

+0

so sagen wir in meiner Tabelle habe ich eine Spalte "E-Mail", und ich mache mehrmals die Abfrage "Wählen * aus Tabl wo E-Mail wie 'etwas'". Diese Spalte ist eine eindeutige Spalte, sie ist jedoch nicht der Primärschlüssel. Also wäre es besser für die Leistung, dass ich es indexiere? –

+0

@Kai: Ja, ein Index verbessert die Leistung beim Lesen von Daten (das Schreiben von Daten kann behindert werden). Eine eindeutige Einschränkung bedeutet nur, dass für alle Zeilen in der Tabelle die Werte in den Spalten mit den für sie definierten eindeutigen Bedingungen eindeutig sind - keine zwei Werte für E-Mail-Spalten wären gleich. –

1

Eine eindeutige Einschränkung ist eine Möglichkeit, die Tatsache auszudrücken, dass etwas (wie eine Kombination von Attributwerten) innerhalb des Umfangs einer ganzen Beziehung ("Tabelle") eindeutig sein muss.

Das ist auf der Ebene der LOGICAL Design.

Ein Index ist ein möglicherweise nützliches Mittel zur Durchsetzung einer solchen Einschränkung.

Das ist auf der Ebene der physikalischen Design.

Einige DBMS-Produkte können bestimmte physikalische Entwurfskonstrukte, wie das Vorhandensein eines bestimmten Index, aus dem Vorhandensein bestimmter logischer Entwurfskonstrukte, wie einer UNIQUE-Einschränkung, ableiten. Andere vielleicht nicht.

1

UNIQUE ist eigentlich eine Einschränkung auf ein Index, also ja, impliziert UNIQUE, dass es einen Index auf dem Feld ist, dass Sie Einzigartigkeit sind die Durchsetzung auf.

+0

so jetzt bin ich wieder verwirrt, soll ich in meine create Tabelle Folgendes einfügen: unique (email), oder: unique index (email)? –

0

Überprüfen Sie die Primärschlüsseleinschränkung, bevor Sie mit der Verwendung von eindeutigen Integritätsbedingungen beginnen.

Eine Primärschlüssel-Einschränkung besteht darin, eine eindeutige Integritätsbedingung und eine Nicht-Null-Integritätsbedingung zu deklarieren. Wenn im Primärschlüssel mehr als eine Spalte vorhanden ist, erhält jede Spalte eine Nicht-Null-Einschränkung, die eindeutige Einschränkung gilt jedoch für alle Spalten zusammen.

Wenn Sie einen Primärschlüssel deklarieren, erstellt das DBMS einen Index für Sie. Sie können den Index löschen, wenn Sie möchten, aber Sie werden eine schreckliche Leistung erhalten, wenn das DBMS Tabellen-Scans durchführt, um nach Eindeutigkeit zu suchen.

Primärschlüsseleinschränkungen erzwingen Entitätsintegrität, während REFERENCES (Fremdschlüssel) die referenzielle Integrität erzwingen. Zusammen sorgen sie für die Gewährleistung der Datenintegrität.