Maison >base de données >tutoriel mysql >Comment les capacités d'indexation des variables de table ont-elles changé dans SQL Server selon les différentes versions ?

Comment les capacités d'indexation des variables de table ont-elles changé dans SQL Server selon les différentes versions ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-12 21:41:47499parcourir

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

Indexation des variables de table SQL Server : SQL Server 2000 par rapport aux versions modernes

SQL Server 2014 et supérieur

Dans SQL Server 2014 et versions ultérieures, vous pouvez spécifier un index non unique directement en ligne lors de la déclaration d'une variable de table :

<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 permet en outre l'utilisation d'index filtrés sur les variables de table :

<code class="language-sql">DECLARE @T TABLE
(
c1 INT NULL INDEX ix UNIQUE WHERE c1 IS NOT NULL
)</code>

SQL Serveur 2000-2012

Dans SQL Server 2000-2012, les variables de table ne peuvent être indexées que via des contraintes :

<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>

Traditionnellement, les tables ont des index clusterisés ou des tas non clusterisés :

  • Indice clusterisé :

    • Peut être un index unique ou un index non unique (SQL Server ajoute un identifiant unique pour les doublons).
    • Peut être remplacé en spécifiant CLUSTERED/NONCLUSTERED à l'aide de contraintes.
  • Index non clusterisé :

    • Peut être un index unique ou un index non unique (SQL Server ajoute des localisateurs de lignes pour les index non uniques).
    • peut également être remplacé comme un index clusterisé.

Implémentation d'index sur des variables de table

Dans SQL Server 2000-2012, les types d'index de variables de table suivants peuvent être créés implicitement via des contraintes :

索引类型 能否创建
唯一聚集索引
非聚集堆上的唯一索引
聚集索引上的唯一非聚集索引

Par exemple, l'index non clusterisé non unique sur la colonne Nom dans l'exemple d'origine pourrait être simulé par un index unique sur Nom et ID :

<code class="language-sql">DECLARE @TEMPTABLE TABLE (
     [ID] [int] NOT NULL PRIMARY KEY
    ,[Name] [nvarchar] (255) COLLATE DATABASE_DEFAULT NULL 
)</code>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn