Frage an primary-key, clustered-index, database, sql-server-2008 – Datenbank: Primärschlüssel, Clustered oder NonClustered

34

Ich erstelle eine Datenbank in SQL Server 2008,

CREATE TABLE Users
(
    U_Id INT NOT NULL
    FirstName VARCHAR(50) NOT NULL,
    LastName VARCHAR(50) NOT NULL,
    Email VARCHAR(200)
    Password VARCHAR(50)
)

Ich möchte U_Id zum Primärschlüssel machen. Ich möchte fragen, was der Unterschied zwischen ist

 CONSTRAINT pk_UserID PRIMARY KEY (U_Id)

diese

 CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id)

und das

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id)

Wann soll jeder verwendet werden?

Ich habe einen Artikel gelesen, aber es ist mir immer noch unklar. Kann mir jemand eine kurze Erklärung geben?

Deine Antwort

1   die antwort
40

Die folgende Aussage:

CONSTRAINT pk_UserID PRIMARY KEY (U_Id)

Ist das gleiche wie dieses:

CONSTRAINT pk_UserID PRIMARY KEY CLUSTERED (U_Id)

Sie können nur die Tabelle Daten Physikalität von geordnet habenein Standardmäßig wird dieser Index für den Primärschlüssel verwendet (die eindeutige Einschränkung für den Primärschlüssel wird immer von einem Index unterstützt).

Wenn Sie die Reihenfolge der zu speichernden Tabellendaten gemäß einem anderen Index belassen möchten, sollten Sie den Primärschlüssel erstellen mit:

CONSTRAINT pk_UserID PRIMARY KEY NONCLUSTERED (U_Id)

Und dann erstellen Sie den Clustered-Index mit:

CREATE CLUSTERED INDEX ix_Email ON Users (Email); 
Primärschlüssel ist die Kennung einer Zeile. Es muss eindeutig sein und darf nicht null sein. Der Clustered Index teilt SQL mit, wie Daten auf der Festplatte gespeichert werden. Die tatsächlichen Datenzeilen werden in der durch diesen Index angegebenen Reihenfolge gespeichert. Da es auch Daten darüber enthält, wo die Daten auf der Festplatte gespeichert sind, wird der gruppierte Indexschlüssel in jedem Index gespeichert. In fast allen Fällen ist es am besten, diese gleich zu machen. Und es ist fast immer am besten, wenn der Primärschlüssel eine Kennung ist, damit die Daten nacheinander auf der Festplatte gespeichert werden. brianfeucht
Beachten Sie jedoch, dass nicht gruppierte Indizes, die Sie erstellen, immer die Daten im gruppierten Index enthalten (da auf diese Weise die eigentliche Datenzeile in der Tabelle gefunden wird).Microsoft-Dokumente  Denken Sie also nicht, dass Sie Platz sparen, indem Sie einen großen / breiten Index zum Clustered-Index machen, es sei denn, Sie haben keine anderen Indizes in der Tabelle. Granger

Verwandte Fragen