Indizierung von SQL Server-Tabellenvariablen: SQL Server 2000 im Vergleich zu modernen Versionen
SQL Server 2014 und höher
In SQL Server 2014 und höher können Sie einen nicht eindeutigen Index direkt inline angeben, wenn Sie eine Tabellenvariable deklarieren:
<code class="language-sql">DECLARE @T TABLE ( C1 INT INDEX IX1 CLUSTERED, C2 INT INDEX IX2 NONCLUSTERED, INDEX IX3 NONCLUSTERED(C1,C2) );</code>
SQL Server 2016 ermöglicht außerdem die Verwendung gefilterter Indizes für Tabellenvariablen:
<code class="language-sql">DECLARE @T TABLE ( c1 INT NULL INDEX ix UNIQUE WHERE c1 IS NOT NULL )</code>
SQL Server 2000-2012
In SQL Server 2000-2012 können Tabellenvariablen nur durch Einschränkungen indiziert werden:
<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>
Traditionell haben Tabellen Clustered-Indizes oder Nonclustered-Heaps:
Clusterierter Index:
Nicht gruppierter Index:
Indizes für Tabellenvariablen implementieren
In SQL Server 2000-2012 können die folgenden Arten von Tabellenvariablenindizes implizit durch Einschränkungen erstellt werden:
索引类型 | 能否创建 |
---|---|
唯一聚集索引 | 是 |
非聚集堆上的唯一索引 | 是 |
聚集索引上的唯一非聚集索引 | 是 |
Zum Beispiel könnte der nicht eindeutige, nicht gruppierte Index für die Spalte „Name“ im ursprünglichen Beispiel durch einen eindeutigen Index für Name und ID simuliert werden:
<code class="language-sql">DECLARE @TEMPTABLE TABLE ( [ID] [int] NOT NULL PRIMARY KEY ,[Name] [nvarchar] (255) COLLATE DATABASE_DEFAULT NULL )</code>
Das obige ist der detaillierte Inhalt vonWie haben sich die Indizierungsfunktionen für Tabellenvariablen in SQL Server in verschiedenen Versionen geändert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!