ホームページ >データベース >mysql チュートリアル >SQL Server のテーブル変数のインデックス作成機能はバージョンごとにどのように変更されましたか?
SQL Server テーブル変数のインデックス作成: SQL Server 2000 と最新バージョン
SQL Server 2014 以降
SQL Server 2014 以降では、テーブル変数を宣言するときに、一意でないインデックスを直接インラインで指定できます。
<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 では、テーブル変数でフィルターされたインデックスを使用できるようになりました。
<code class="language-sql">DECLARE @T TABLE ( c1 INT NULL INDEX ix UNIQUE WHERE c1 IS NOT NULL )</code>
SQL Server 2000-2012
SQL Server 2000 ~ 2012 では、テーブル変数は制約を通じてのみインデックス付けできます。
<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>
伝統的に、テーブルにはクラスター化インデックスまたは非クラスター化ヒープがあります:
クラスター化インデックス:
非クラスター化インデックス:
テーブル変数へのインデックスの実装
SQL Server 2000 ~ 2012 では、次のタイプのテーブル変数インデックスを制約を通じて暗黙的に作成できます。
索引类型 | 能否创建 |
---|---|
唯一聚集索引 | 是 |
非聚集堆上的唯一索引 | 是 |
聚集索引上的唯一非聚集索引 | 是 |
たとえば、元の例の Name 列の一意でない非クラスター化インデックスは、名前と ID の一意のインデックスによってシミュレートできます。
<code class="language-sql">DECLARE @TEMPTABLE TABLE ( [ID] [int] NOT NULL PRIMARY KEY ,[Name] [nvarchar] (255) COLLATE DATABASE_DEFAULT NULL )</code>
以上がSQL Server のテーブル変数のインデックス作成機能はバージョンごとにどのように変更されましたか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。