2017-01-15 2 views
0

Wenn es einen nicht zusammengesetzten Schlüssel in einer Tabelle gibt, würde es Sinn machen, es als Clustered oder Non-Clustered zu setzen? Zum Beispiel unter der Annahme, die folgende Tabelle:Clustered/Non-Clustered für nicht zusammengesetzte Schlüssel

CREATE TABLE [dbo].[Logins] 
(
    [Customer_Id] UNIQUEIDENTIFIER ROWGUIDCOL PRIMARY KEY REFERENCES Customers(Customer_Id) ON DELETE CASCADE, 
    [Email] NVARCHAR(50) NOT NULL UNIQUE NONCLUSTERED, 
    [Password] NVARCHAR(64) NOT NULL 
) 

Da die Customer_Id Verwendung einer sequentiellen eindeutigen Kennung macht, dann gibt es keinen Grund, eine andere Taste zu machen, wie gruppierte. Aber aus meiner Sicht wäre dies von Vorteil, wenn der andere Schlüssel beispielsweise ein zusammengesetzter Schlüssel wie CONSTRAINT [Table_UK] UNIQUE NONCLUSTERED (Email, OrderId) ist.

Aber ich bin nicht sicher, ob ein nicht-zusammengesetzten Schlüssel, wie ich dargestellt wird, kann auch davon, dass nicht gruppierten profitieren Datenbank-Performance (Speichern der Mühe für das Sortieren usw., als die sequenzielle Schlüssel von Natur sortiert ist) speichern

+2

Ihre Definition von 'Customer_Id' erzeugt keine sequentiellen GUIDs - Sie müssen' default newsequentialid() 'hinzufügen, aber auch dann ist es nicht garantiert, da die GUID-Sequenz zurückgesetzt wird, wenn Sie Windows (https://msdn.microsoft) neu starten .com/de-de/library/ms189786 (v = sql.110) .aspx). Sie können einen Index immer neu organisieren, wenn er zu fragmentiert wird. – Moho

Antwort

Verwandte Themen