インデックスの作成
約1000万レコードのテーブルに対してselectしている処理で、タイムアウトが発生するため、インデックスを作成した。
作成する際はSQLの条件に使用しているフィールドをインデックスの対象にする。
3分以上かかっていた処理が10秒程度に改善された。
処理が遅い場合はSQL文の見直しも必要だが、対象件数が多いと対処できない事がある。その場合はインデックスの追加で処理時間の改善をはかる。
[作成手順]
オブジェクトエクスプローラーでテーブルを選択してツリーを開く
インデックスを右クリックして新しいインデックス→非クラスター化インデックスを選択
対象のフィールドを追加して作成を行う
インデックスのスクリプト
------------------------------------------------------------------
USE [データベース名]
GO
/****** Object: Index [インデックス名] Script Date: 2014/11/12 8:37:02 ******/
CREATE NONCLUSTERED INDEX [インデックス名] ON [dbo].[テーブル名]
(
[フィールド名1] ASC,
[フィールド名2] 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)
GO