新しく学んだ事

業務システムの受託開発を主に行っています。人生日々勉強。日々新しく学んだ事を記します。

インデックスの作成

約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