私のデータベースには、親子関係であるいくつかのテーブルがあります。例えば:
CREATE TABLE [dbo].[cntnr_header]
(
[cntnr_id] [dbo].[uid] NOT NULL,
CONSTRAINT [pk_cntnr_header] PRIMARY KEY CLUSTERED ([cntnr_id] ASC),
);
CREATE TABLE [dbo].[cntnr_content]
(
[cntnr_content_id] [dbo].[uid] NOT NULL,
[cntnr_id] [dbo].[uid] NOT NULL,
CONSTRAINT [pk_cntnr_content]
PRIMARY KEY CLUSTERED ([cntnr_content_id] ASC),
CONSTRAINT [fk_cntnr_content_cntnr_header]
FOREIGN KEY ([cntnr_id])
REFERENCES [dbo].[cntnr_header] ([cntnr_id]),
);
現在、ご覧cntnr_id
のとおり、テーブルの外部キーにはインデックスがありませんcntnr_content
。cntnr_content_id
チューニング ウィザードを実行したところ、テーブルとcntnr_id
テーブルの両方に非クラスター化インデックスを追加することが提案されましたcntnr_content
。cntnr_content_id
はすでにクラスター化インデックスであるため、これはよくわかりません。なぜこのようなインデックスを推奨するのでしょうか?
CREATE NONCLUSTERED INDEX [_dta_index_cntnr_content_7_821577965__K1_K2] ON [dbo].[cntnr_content]
(
[cntnr_content_id] ASC,
[cntnr_id] ASC
)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
cntnr_id
おそらく、このテーブルの すぐ上に非クラスター化インデックスを追加する必要があると思います。
このシナリオに推奨される方法はありますか? このような関係を持つ特定のインデックスを常に追加する必要がありますか?
多くのクエリは、これら 2 つのテーブルを結合するか、または を指定しcntnr_id
て選択を実行します。これも更新/削除の重いテーブルです。更新と削除は常に主キー ( ) で行われます。cntnr_content
cntnr_id
cntnr_content_id