SQLServerのインデックスについて調べてみました。
恐らく、以下に挙げる内容は「至極当然」の話だと思いますが、
調べてみたので残しておきます。
まずは、クラスタ化インデックスをSectionNoに張り、Noに非クラスタ化一意インデックスを張ったテーブル
USE [DB_TEST]
GO
CREATE TABLE [dbo].[Clustered_Table](
[No] [int] NOT NULL,
[SectionNo] [int] NOT NULL,
[Name] [nvarchar](50) COLLATE Japanese_CI_AS NOT NULL,
[updDate] [datetime] NOT NULL
) ON [PRIMARY]
USE [DB_TEST]
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Primary_Table] ON [dbo].[Clustered_Table]
(
[No] ASC
)WITH (PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]USE [DB_TEST]
GO
CREATE CLUSTERED INDEX [IX_Clustered_Table] ON [dbo].[Clustered_Table]
(
[SectionNo] ASC
)WITH (PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [PRIMARY]
次にNo列にプライマリキーをつけたもの
USE [DB_TEST]
GOSET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[NonClustered_Table](
[No] [int] NOT NULL,
[SectionNo] [int] NOT NULL,
[Name] [nvarchar](50) COLLATE Japanese_CI_AS NOT NULL,
[updDate] [datetime] NOT NULL,
CONSTRAINT [PK_NonClustered_Table] PRIMARY KEY CLUSTERED
(
[No] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
この2つのテーブルに10000件のデータをそれぞれ入れて、
SELECT * FROM dbo.Clusterd_Table WHERE SectionNo = 500
SELECT * FROM dbo.NonClusterd_Table WHERE SectionNo = 500
なんていうSQLを実行させて、それぞれ実行プランを取得しました。
すると、コストに以下の差がでました。
非クラスタ化
I/Oコスト:0.0586806
CPUコスト:0.011157
操作コスト:0.0698376
クラスタ化
I/Oコスト:0.003125
CPUコスト:0.000168
操作コスト:0.003293
クラスタで分割された範囲を検索させると劇的な速さが実現されるようです。
ただ、プライマリキーでの検索ではさすがに非クラスタ化の方が早いように思います。
(実際にはそんなに数値的な差は無かったですが、
クラスタ化テーブルの方は、一意インデックスとクラスタ化インデックスの両方を検索していました)
まあ、範囲検索が多いか、キーでの検索が多いかの違いでしょうか。
テーブル設計をしっかりしましょうということで。
(クラスタ分割した時ってインデックスの再構築が必要になるような…?)
| 固定リンク
「DataBase」カテゴリの記事
- XAMPP on WindowsでMySQLの文字化け対策(2011.06.08)
- DateTime型のデータがキーになった時の検索(2009.02.18)
- SQLServerのインデックスについて調べてみました。(2008.12.28)
- SQLServerパフォーマンス関係の情報取得メモ(2008.12.11)
- SQLServerのログを参照する方法(2008.11.17)
この記事へのコメントは終了しました。




![(株)グルージェント: Google App Engine for Java [実践]クラウドシステム構築 (WEB+DB PRESS plus) (WEB+DB PRESSプラスシリーズ) (WEB+DB PRESS plusシリーズ)](http://ecx.images-amazon.com/images/I/51S5E3PHJFL._SL75_.jpg)





コメント