SQL Serverにはユニーク制約とユニークインデックスが作成できます。
- ユニーク制約とユニークインデックスの違いってインデックスが出来るかどうか。
- ユニーク制約を作成するって言うことは、ユニークかどうかを検査しないといけない。
- ということはインデックスの方が速いよね?インデックスで検査できるんだから。
ということに気づいてちょっと調べてみたんですよ。
でも両者の差は誤差の範囲を超えないんです。
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]