Index für SQL Server-Tabellenvariable
In SQL Server 2014 und höher ist es möglich, mithilfe der Inline-Syntax Indizes direkt für Tabellenvariablen zu erstellen. Zum Beispiel:
<code class="language-sql">DECLARE @T TABLE ( C1 INT INDEX IX1 CLUSTERED, C2 INT INDEX IX2 NONCLUSTERED, INDEX IX3 NONCLUSTERED(C1, C2), );</code>
Im Gegensatz dazu können in SQL Server 2000 bis 2012 Indizes nicht explizit für Tabellenvariablen erstellt werden. Implizite Indizes können jedoch durch Einschränkungsdeklarationen erstellt werden.
Erstellen Sie einen Index für die Spalte „Name“ in SQL Server 2000
Betrachten Sie die folgende Tabellenvariablendeklaration:
<code class="language-sql">DECLARE @TEMPTABLE TABLE ( [ID] [INT] NOT NULL PRIMARY KEY, [Name] [NVARCHAR] (255) COLLATE DATABASE_DEFAULT NULL, );</code>
Kann ich einen Index für die Spalte „Name“ erstellen?
Ja, Sie können die Einschränkung UNIQUE NONCLUSTERED
verwenden, um einen Index für die Spalte „Name“ zu erstellen. Die Syntax lautet wie folgt:
<code class="language-sql">DECLARE @TEMPTABLE TABLE ( [ID] [INT] NOT NULL PRIMARY KEY, [Name] [NVARCHAR] (255) COLLATE DATABASE_DEFAULT NULL, UNIQUE NONCLUSTERED ([Name], [ID]), );</code>
Implementierung von Indizes auf Tabellenvariablen
Herkömmliche Tabellen in SQL Server können Clustered-Indizes oder Heaps sein. In Tabellenvariablen werden Indizes implizit nur durch Einschränkungen erstellt. Dies bedeutet, dass die Arten von Indizes, die für Tabellenvariablen erstellt werden können, begrenzt sind.
Die folgende Tabelle fasst die verschiedenen Arten von Indizes zusammen und gibt an, ob sie für Tabellenvariablen in SQL Server 2000 bis 2012 erstellt werden können.
索引类型 | 表变量支持 |
---|---|
唯一聚集索引 | 是 |
非唯一聚集索引 | 否 |
堆上的唯一非聚集索引 | 是 |
堆上的非唯一非聚集索引 | 否 |
聚集索引上的唯一非聚集索引 | 是 |
聚集索引上的非唯一非聚集索引 | 是 |
Im bereitgestellten Beispiel wird ein nicht eindeutiger, nicht gruppierter Index für die Spalte „Name“ simuliert, indem ein eindeutiger Index für „Name“ und „ID“ erstellt wird. Dies liegt daran, dass SQL Server implizit gruppierte Indexschlüssel zu nicht eindeutigen Indexschlüsseln hinzufügt.
Das obige ist der detaillierte Inhalt vonKann ich Indizes für SQL Server-Tabellenvariablen erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!