SQL Server Management Studio または Transact-SQL を使用して、SQL Server 2014 で非クラスター化インデックスを作成できます。 非クラスター化インデックスは、選択した 1 つ以上の列を並べ替えるテーブルに格納されているデータとは別のインデックス構造です。 非クラスター化インデックスは、多くの場合、基になるテーブルを検索するよりもデータをすばやく見つけるのに役立ちます。クエリは、非クラスター化インデックス内のデータによって完全に応答される場合もあれば、非クラスター化インデックスがデータベース エンジンを基になるテーブル内の行にポイントする場合もあります。 一般に、非クラスター化インデックスは、クラスター化インデックスの対象とされない頻繁に使用されるクエリのパフォーマンスを向上させたり、クラスター化インデックス (ヒープと呼ばれる) のないテーブル内の行を検索したりするために作成されます。 1 つのテーブルまたはインデックス付きビューに複数の非クラスター化インデックスを作成できます。
このトピックについて
作業を開始する準備:
非クラスター化インデックスを作成するには、次を使用します。
開始する前に
一般的な実装
非クラスター化インデックスは、次の方法で実装されます。
UNIQUE 制約
UNIQUE 制約を作成すると、一意の非クラスター化インデックスが作成され、既定で UNIQUE 制約が適用されます。 テーブルにクラスター化インデックスがまだ存在しない場合は、一意のクラスター化インデックスを指定できます。 詳細については、「 一意制約」および「Check 制約」を参照してください。
制約に依存しないインデックス
既定では、クラスター化が指定されていない場合、非クラスター化インデックスが作成されます。 テーブルごとに作成できる非クラスター化インデックスの最大数は 999 です。 これには、PRIMARY KEY 制約または UNIQUE 制約によって作成されたインデックスが含まれますが、XML インデックスは含まれません。
インデックス付きビューの非クラスター化インデックス
ビューで一意のクラスター化インデックスを作成した後、非クラスター化インデックスを作成できます。 詳細については、「 インデックス付きビューの作成」を参照してください。
安全
権限
テーブルまたはビューに対する ALTER 権限が必要です。 実行するには、 sysadmin 固定サーバー ロール、または db_ddladmin 固定データベース ロールおよび db_owner 固定データベース ロールのメンバーである必要があります。
SQL Server Management Studio の使用
テーブル デザイナーを使用して非クラスター化インデックスを作成するには
オブジェクト エクスプローラーで、非クラスター化インデックスを作成するテーブルを含むデータベースを展開します。
[テーブル] フォルダーを展開します。
非クラスター化インデックスを作成するテーブルを右クリックし、[ デザイン] を選択します。
[テーブル デザイナー] メニューの [インデックス/キー]をクリックします。
[ インデックス/キー ] ダイアログ ボックスで、[ 追加] をクリックします。
[ 選択した主/一意キー] または [インデックス ] テキスト ボックスで新しいインデックスを選択します。
グリッドで、[ クラスター化として作成] を選択し、プロパティの右側にあるドロップダウン リストから [いいえ ] を選択します。
をクリックしてを閉じます。
[ファイル] メニューの テーブル名の保存]をクリックします。
オブジェクト エクスプローラーを使用して非クラスター化インデックスを作成するには
オブジェクト エクスプローラーで、非クラスター化インデックスを作成するテーブルを含むデータベースを展開します。
[テーブル] フォルダーを展開します。
非クラスター化インデックスを作成するテーブルを展開します。
[インデックス] フォルダーを右クリックし、[新しいインデックス] をポイントして、[非クラスター化インデックス...] を選択します。
[ 新しいインデックス ] ダイアログ ボックスの [ 全般 ] ページで、[インデックス名] ボックスに新しいインデックスの 名前 を入力します。
[インデックス キー列] で、[追加...] をクリックします。
[ table_nameから列を選択] ダイアログ ボックス で、非クラスター化インデックスに追加するテーブルの列のチェック ボックスまたはチェック ボックスをオンにします。
OK をクリックします。
[ 新しいインデックス ] ダイアログ ボックスで、[OK] をクリック します。
Transact-SQL の使用
テーブルに非クラスター化インデックスを作成するには
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
標準バーで [新しいクエリ] をクリックします。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。
USE AdventureWorks2012; GO -- Find an existing index named IX_ProductVendor_VendorID and delete it if found. IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ProductVendor_VendorID') DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor; GO -- Create a nonclustered index called IX_ProductVendor_VendorID -- on the Purchasing.ProductVendor table using the BusinessEntityID column. CREATE NONCLUSTERED INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor (BusinessEntityID); GO
詳細については、「 CREATE INDEX (Transact-SQL)」を参照してください。