Ich erstelle eine Tabelle Brands
mit folgendem Schema:SQL Server: Constraint Optimierung für eine Abfrage basiert auf zwei Säulen durchführen
UserId
CarId
Brand
- Die
UserId
Referenzen dieid
eines Benutzers in deruser
Tabelle - die
CarId
Referenzen dieid
ein Auto in dercar
Tabelle
Die einzige Abfrage, die ich verwenden werde, ist eine Suche basierend auf diesen 2 Spalten, um die entsprechende Marke zu erhalten.
Also meine Frage war über die Einschränkung Teil, wie ich bin ein Anfänger, würde ich gerne wissen, welche Art von Einschränkung (Index, Primärschlüssel, gruppiert oder nicht gruppiert, auf jedem Feld oder auf den 2 Feldern zusammen verwenden) um meine Abfrage zu optimieren, die möglich ist.
Das ist mein Skript jetzt:
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Brands]') AND type in (N'U'))
BEGIN
CREATE TABLE [Brands]
(
UserId BIGINT NOT NULL
CONSTRAINT [FK_Brands_Users]
FOREIGN KEY REFERENCES [Users] (UserId),
CarId BIGINT NOT NULL
CONSTRAINT [FK_Brands_Cars]
FOREIGN KEY REFERENCES [Cars] (CarId),
Brand nvarchar(15),
);
END
GO
ALTER TABLE [Brands]
ADD CONSTRAINT [Unique_UserId_BrandId] UNIQUE(UserId, BrandId);
GO
Constraint wirkt sich nicht auf die Abfrageleistung aus. Es ist der Index, der hilft – Squirrel
Also sollte ich einen Primärschlüssel für jedes Feld oder einen Primärschlüssel, der beide Felder enthält, erstellen? – user2443476
Sie können nur einen Primärschlüssel in der Tabelle haben. – Squirrel