中の技術日誌ブログ

C#とC++/CLIと
VBと.NETとWindowsで戯れる
 

目次

Blog 利用状況

ニュース

自己紹介

東京でソフトウェアエンジニアをやっています。
お仕事大募集中です。
記事執筆や、講師依頼とかでも何でもどうぞ(*^_^*)
似顔絵 MSMVPロゴ
MSMVP Visual C# Since 2004/04-2013/03

記事カテゴリ

書庫

日記カテゴリ

00-整理

01-MSMVP

ユニーク制約と、ユニークインデックス

SQL Serverにはユニーク制約とユニークインデックスが作成できます。

  1. ユニーク制約とユニークインデックスの違いってインデックスが出来るかどうか。
  2. ユニーク制約を作成するって言うことは、ユニークかどうかを検査しないといけない。
  3. ということはインデックスの方が速いよね?インデックスで検査できるんだから。

ということに気づいてちょっと調べてみたんですよ。

でも両者の差は誤差の範囲を超えないんです。

SELECTした結果も非クラスタ化インデックスシークになってるし。

何故に両者の違いがあるのか教えてえらいひとー(なんだったっけウゴウゴルーガだ)

SET NOCOUNT ON
CREATE TABLE [#TEMP]
(
 [PK] INT IDENTITY PRIMARY KEY CLUSTERED,
 [DAT] INT UNIQUE
)
DECLARE @LOOP INT,
@STARTT AS DATETIME
SET @LOOP = 0
SET @STARTT = GETDATE()
WHILE @LOOP < 100000
BEGIN
 INSERT INTO [#TEMP]([DAT]) VALUES( @LOOP)
 SET @LOOP = @LOOP + 1
END;
SELECT DATEDIFF(MS, @STARTT, GETDATE())
DROP TABLE [#TEMP]
GO
SET NOCOUNT ON
CREATE TABLE [#TEMP]
(
 [PK] INT IDENTITY PRIMARY KEY CLUSTERED,
 [DAT] INT
)
CREATE UNIQUE INDEX XXX ON [#TEMP]
(
 DAT
)
DECLARE @LOOP INT,
@STARTT AS DATETIME
SET @LOOP = 0
SET @STARTT = GETDATE()
WHILE @LOOP < 100000
BEGIN
 INSERT INTO [#TEMP]([DAT]) VALUES( @LOOP)
 SET @LOOP = @LOOP + 1
END;
SELECT DATEDIFF(MS, @STARTT, GETDATE())
DROP TABLE [#TEMP]

投稿日時 : 2004年6月26日 0:22

コメントを追加

# ユニーク制約は内部的にユニークインデックスをもつ 2004/06/26 18:00 米田 Blog ( SQL Server MEMO )

ユニーク制約は内部的にユニークインデックスをもつ

# UniqueインデックスとUnique制約その2 2004/06/27 13:42 中の技術日誌

UniqueインデックスとUnique制約その2

# re: OJTでの知識は全能ではありません 2007/06/19 20:00 Ognacの雑感

re: OJTでの知識は全能ではありません

タイトル
名前
URL
コメント