Antwort

5

Der Clustered-Index einer Tabelle normalerweise auf die Primärschlüsselspalten definiert ist.

Dies ist jedoch keine strenge Anforderung.

Von MSDN:

Wenn Sie eine PRIMARY KEY-Einschränkung erstellen, einen eindeutigen gruppierten Index für die Spalte oder Spalten automatisch erstellt wird, wenn ein Clustered-Index für die Tabelle nicht existiert bereits und Sie keine angeben eindeutiger Nonclustered-Index.

Und:

Sie können einen gruppierten Index für eine andere Spalte als Primärschlüsselspalte erstellen, wenn ein nicht gruppierten Primärschlüsselbedingung angegeben wurde.

4

Ein Primärschlüssel ist, wie der Name schon sagt, die primäre eindeutige Kennung für eine Zeile in der Tabelle. Ein gruppierter Index sortiert die Daten physisch nach dem Index. Obwohl SQL Server standardmäßig einen Primärschlüssel gruppiert, besteht keine direkte Beziehung zwischen den beiden.

9

Wie verhält sich das Schlüsselwort PRIMARY KEY zu Clustered-Indizes in MS SqlServer?

Standardmäßig ist PRIMARY KEY als Clustered-Index implementiert. Sie können es jedoch auch durch einen nicht gruppierten Index sichern (unter Angabe von NONCLUSTERED Optionen für seine Deklaration).

Ein Clustered-Index ist nicht notwendigerweise ein PRIMARY KEY. Es kann sogar nicht eindeutig sein (in diesem Fall wird zu jedem Schlüssel eine versteckte Spalte namens uniqueifier hinzugefügt).

Beachten Sie, dass ein gruppierter Index nicht wirklich ein Index ist (d. H. Eine Projektion einer Tabelle, die anders angeordnet ist, mit den Verweisen auf Originalsätze). Es ist die Tabelle selbst, mit den ursprünglichen Aufzeichnungen bestellt.

Wenn Sie einen gruppierten Index erstellen, "erstellen" Sie nichts, was Sie aus der Tabelle entfernen können. Sie ändern nur die Tabelle selbst und ändern die Art und Weise, wie die Datensätze gespeichert werden.

+1

Wow, Uniquifier. Heute etwas Neues gelernt. –

+1

Wenn Sie einen Clustered-Index erstellen, erstellen Sie eine Stammindexseite und Zwischenseiten. Immer noch +1. –

Verwandte Themen