非クラスター化インデックスを作成する
SQL Serverで非クラスター化インデックスを作成する手順を紹介します。
手順 : SQL Server Management Studio を利用する場合
SQL Server Management Studio を起動します。データベースサーバーに接続し、左側の[オブジェクト エクスプローラー]からデータベースのノードを展開し、[テーブル]ノードを開き、インデックスを作成したいテーブル名のノードを開きます。テーブル名ノードの子ノードの[インデックス]ノードをクリックして選択します。
右クリックしてポップアップメニューを表示します。[新しいインデックス]メニューをクリックします。
サブメニューが表示されますので、[非クラスター化インデックス]をクリックします。
[新しいインデックス]ウィンドウが表示されます。ウィンドウ右下部分の[インデックス キー列]のエリアの右側の[追加]ボタンをクリックします。
['(dbo.テーブル名)' から列を選択] ダイアログが表示されます。
インデックスで使用する列の左側のチェックボックスにチェックをつけ指定します。指定した後ウィンドウの[OK]ボタンをクリックしてウィンドウを閉じます。
[新しいインデックス]ウィンドウに戻ると、[インデックス キー列]のエリアに先のウィンドウで指定した列名が追加されています。今回はインデックスには1つの列のみを使用しますので、この状態で設定完了とします。ウィンドウ右下の[OK]ボタンをクリックし、インデックス作成を開始します。
インデックスが作成されると[新しいインデックス]ウィンドウは閉じられます。SQL Server Management Studio に戻り、[オブジェクト エクスプローラー]のテーブル名ノードの子ノードの[インデックス]ノードの下にインデックス名のノードが作成されていることが確認できます。ノードのキャプションにも「(非クラスター化)」の文字列が表示されており、非クラスター化インデックスが作成できたことが確認できます。
手順 : SQLで作成する場合
書式
CREATE NONCLUSTERED INDEX [(インデックス名)] ON [dbo].[(テーブル名)]
(
[(インデックス列名)]
)
CREATE NONCLUSTERED INDEX [(インデックス名)] ON [dbo].[(テーブル名)]
(
[(インデックス列名1)],[(インデックス列名2)],[(インデックス列名3)]...[(インデックス列名n)]
)
または
USE [(データベース名)]
GO
CREATE NONCLUSTERED INDEX [(インデックス名)] ON [dbo].[(テーブル名)]
(
[(インデックス列名1)],[(インデックス列名2)],[(インデックス列名3)]...[(インデックス列名n)]
)
GO
各種オプションを含めた書式は下記になります。
USE [(データベース名)]
GO
CREATE NONCLUSTERED INDEX [(インデックス名)] ON [dbo].[(テーブル名)]
(
[(インデックス列名1)] ASC,
[(インデックス列名2)] ASC,
[(インデックス列名3)] ASC,
....
[(インデックス列名n)] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
SQL例
例1
CREATE NONCLUSTERED INDEX [test001] ON [dbo].[Products]
(
[name]
)
例2
USE [iPentecSandBox]
GO
CREATE NONCLUSTERED INDEX [NonClusteredIndex-20170824-105051] ON [dbo].[Products]
(
[name] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
補足:複数の列のインデックスを作成する場合の順番
インデックスに複数の列を指定することができ、複合インデックスと呼ばれます。複合インデックス作成時の列の指定順によってパフォーマンスに差が出ることがあります。複合インデックスの列の指定順については
こちらの記事を参照してください。
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。