Es ist möglich, einen Primärschlüssel oder einen eindeutigen Index in einer SQL Server-Anweisung CREATE TABLE zu erstellen. Ist es möglich, einen nicht eindeutigen Index innerhalb einer CREATE TABLE-Anweisung zu erstellen ?
CREATE TABLE MyTable(
a int NOT NULL
,b smallint NOT NULL
,c smallint NOT NULL
,d smallint NOT NULL
,e smallint NOT NULL
-- This creates a primary key
,CONSTRAINT PK_MyTable PRIMARY KEY CLUSTERED (a)
-- This creates a unique nonclustered index on columns b and c
,CONSTRAINT IX_MyTable1 UNIQUE (b, c)
-- Is it possible to create a non-unique index on columns d and e here?
-- Note: these variations would not work if attempted:
-- ,CONSTRAINT IX_MyTable2 INDEX (d, e)
-- ,CONSTRAINT IX_MyTable3 NONCLUSTERED INDEX (d, e)
);
GO
-- The proposed non-unique index should behave identically to
-- an index created after the CREATE TABLE statement. Example:
CREATE NONCLUSTERED INDEX IX_MyTable4 ON MY_TABLE (d, e);
GO
Wiederum besteht das Ziel darin, den nicht eindeutigen Index innerhalb der Anweisung CREATE TABLE zu erstellen, nicht danach.
Für das, was es wert ist, fand ich den [SQL Server Books Online-Eintrag für CREATE TABLE] nicht hilfreich.
Auch [Diese Frage] ist nahezu identisch, aber die akzeptierte Antwort trifft nicht zu.
quelle
Error: (1146) Table 'tablename' doesn't exist
, hahahah, ironischWie pro T-SQL CREATE TABLE - Dokumentation, die Spaltendefinition Stützen 2014 definieren einen Index:
und Grammatik ist definiert als:
So kann vieles, was Sie als separate Anweisung tun können, inline erfolgen. Mir ist aufgefallen, dass
include
dies in dieser Grammatik keine Option ist, daher sind einige Dinge nicht möglich.Sie können Inline-Indizes auch als eine andere Zeile nach Spalten definieren lassen, jedoch innerhalb der Anweisung create table. Dies ermöglicht mehrere Spalten im Index, jedoch immer noch keine
include
Klausel:Zum Beispiel fügen wir hier einen Index für beide Spalten c und d hinzu:
quelle
Es ist eine separate Aussage.
Es ist auch nicht möglich, in eine Tabelle einzufügen und daraus auszuwählen und einen Index in derselben Anweisung zu erstellen.
Der BOL-Eintrag enthält die Informationen, die Sie benötigen:
Sie können einen Index für ein PK-Feld erstellen, jedoch keinen nicht gruppierten Index für ein nicht pk-nicht eindeutig eindeutiges Feld.
Ein NCL-Index ist für die Struktur der Tabelle nicht relevant und stellt keine Einschränkung für die Daten in der Tabelle dar. Es handelt sich um eine separate Entität, die die Tabelle unterstützt, jedoch nicht in die Funktionalität oder das Design integriert ist.
Deshalb ist es eine separate Aussage. Der NCL-Index ist aus Entwurfssicht für die Tabelle irrelevant (trotz Abfrageoptimierung).
quelle
Die akzeptierte Antwort zum Erstellen eines Index inline eines Tabellenerstellungsskripts hat bei mir nicht funktioniert. Dies tat:
Denken Sie daran, dass Fremdschlüssel keine Indizes erstellen. Es wird daher empfohlen, sie zu indizieren, da Sie höchstwahrscheinlich Mitglied werden.
quelle