データベースモデリングにおける外部キーのテーブルインデックスに関する一般的な質問があります。私はテーブルを持っている場合は、として作成TABLE_A、:としてSQL Server 2005の外部キーとインデックス
CREATE TABLE [dbo].[TABLE_A](
[ID] [int] IDENTITY(1,1) NOT NULL,
[RelatedTableBID] [int] NOT NULL,
CONSTRAINT [PK__TABLE_A] PRIMARY KEY CLUSTERED
(
[ID] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE [dbo].[TABLE_A] WITH CHECK
ADD CONSTRAINT [TABLE_A__RelatedTableB]
FOREIGN KEY([RelatedTableBID])
REFERENCES [dbo].[TABLE_B] ([ID])
とTable_B:私は参照元テーブル上のインデックス(表A)参照を作成した場合
CREATE TABLE [dbo].[TABLE_B](
[ID] [int] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK__TABLE_B] PRIMARY KEY CLUSTERED
(
[ID] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
) ON [PRIMARY]
は、それが実際には、より効率的になります列(RelatedTableBID)?次のように:
CREATE INDEX TABLE_A_FK_INDEX1 on TABLE_A(RelatedTableBID)
またはこれについて後で考えますか?参照されている列自体はクラスタ化されたインデックスなので、結合中には何も問題はないはずです。もしあれば、TABLE_Bからの削除だけがパフォーマンスの低下に敏感なようです。
私を真っ直ぐにしてくれてありがとうございます。一般的にはそう
-Mustafa
EDIT
、私が今までに参加したり照会するときに、一貫句、私はそれにインデックスを追加することを検討すべきであるところで、カラムを使用している場合は? What are some best practices and "rules of thumb" for creating database indexes?そのような音は、一般的に健全な決定です。
わからない - 私はジョー・ステファネリは私が設定されていると思いますまっすぐ。 – Mustafakidd