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é :
Index non 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!