ホームページ > データベース > mysql チュートリアル > SQL Server テーブル変数にインデックスを作成できますか?

SQL Server テーブル変数にインデックスを作成できますか?

Mary-Kate Olsen
リリース: 2025-01-12 21:32:46
オリジナル
969 人が閲覧しました

Can I Create Indexes on SQL Server Table Variables?

SQL Server テーブル変数のインデックス

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 2000 ~ 2012 では、テーブル変数にインデックスを明示的に作成できません。ただし、暗黙的なインデックスは制約宣言を通じて作成できます。

SQL Server 2000 の Name 列のインデックスを作成します

次のテーブル変数宣言について考えてみましょう:

<code class="language-sql">DECLARE @TEMPTABLE TABLE (
  [ID] [INT] NOT NULL PRIMARY KEY,
  [Name] [NVARCHAR] (255) COLLATE DATABASE_DEFAULT NULL,
);</code>
ログイン後にコピー

名前列にインデックスを作成できますか?

はい、UNIQUE NONCLUSTERED 制約を使用して、Name 列にインデックスを作成できます。構文は次のとおりです:

<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 の従来のテーブルは、クラスター化インデックスまたはヒープにすることができます。テーブル変数では、インデックスは制約を通じてのみ暗黙的に作成されます。これは、テーブル変数に対して作成できるインデックスの種類が制限されていることを意味します。

次の表は、さまざまな種類のインデックスと、それらのインデックスを SQL Server 2000 ~ 2012 のテーブル変数に作成できるかどうかをまとめたものです。

索引类型 表变量支持
唯一聚集索引
非唯一聚集索引
堆上的唯一非聚集索引
堆上的非唯一非聚集索引
聚集索引上的唯一非聚集索引
聚集索引上的非唯一非聚集索引

ここに示した例では、Name 列の一意でない非クラスター化インデックスは、Name と ID に一意のインデックスを作成することによってシミュレートされています。これは、SQL Server がクラスター化インデックス キーを一意でないインデックス キーに暗黙的に追加するためです。

以上がSQL Server テーブル変数にインデックスを作成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート