このようなテーブルを作成すると
CREATE TABLE Test
(TestId INT IDENTITY(1,1) NOT NULL,
FName VARCHAR(255) NOT NULL,
LName VARCHAR(255) NOT NULL,
CONSTRAINT PK_TestID PRIMARY KEY(TestId))
SQL Serverは、主キーに関連するものをsys.key_constraints
1つずつ作成しsys.indexes
ます。以下のクエリを実行するとわかるように、テーブルの作成の前後です。
SELECT Count(*)
FROM
sys.key_constraints
SELECT Count(*)
FROM
sys.indexes
WHERE
object_id IN (SELECT object_id
FROM
sys.objects
WHERE
type_desc = 'USER_TABLE')
また、それらを使用します。
私がこれを実行したとき
INSERT INTO test
VALUES
('Me', 'You')
実行プランはを示していますClustered Index Insert
。
しかし、私が制約を落とすと
ALTER TABLE Test
DROP CONSTRAINT PK_TestID
GO
次に、上記の2つのクエリを実行しました。sys.key_constraints
カウントは、それが持っているものより1つ少なくなります。これは、正確に想定されているものです。しかしsys.indexes
、私がこれを実行すると、それでも同じカウントがあります
SELECT *
FROM
sys.indexes
WHERE
object_id IN (SELECT object_id
FROM
sys.objects
WHERE
type_desc = 'USER_TABLE')
AND
object_id = object_id(N'Test')
ORDER BY
[name]
は0name
に設定されてNULL
います。しかし、その行で行ったように、これを削除してみませんか?index_id
sys.key_constraint