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
Libérer: 2025-01-12 21:41:47
original
441 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal