Heim > Datenbank > MySQL-Tutorial > Wie haben sich die Indizierungsfunktionen für Tabellenvariablen in SQL Server in verschiedenen Versionen geändert?

Wie haben sich die Indizierungsfunktionen für Tabellenvariablen in SQL Server in verschiedenen Versionen geändert?

Barbara Streisand
Freigeben: 2025-01-12 21:41:47
Original
442 Leute haben es durchsucht

How Have Indexing Capabilities for Table Variables Changed in SQL Server Across Different Versions?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Traditionell haben Tabellen Clustered-Indizes oder Nonclustered-Heaps:

  • Clusterierter Index:

    • Kann ein eindeutiger Index oder ein nicht eindeutiger Index sein (SQL Server fügt eine eindeutige Kennung für Duplikate hinzu).
    • Kann durch Angabe von CLUSTERED/NONCLUSTERED mithilfe von Einschränkungen überschrieben werden.
  • Nicht gruppierter Index:

    • Kann ein eindeutiger Index oder ein nicht eindeutiger Index sein (SQL Server fügt Zeilenlocators für nicht eindeutige Indizes hinzu).
    • kann auch wie ein Clustered-Index überschrieben werden.

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage