gpt4 book ai didi

sql-server-2008 - 外键和索引问题

转载 作者:行者123 更新时间:2023-12-02 07:13:47 27 4
gpt4 key购买 nike

我正在使用 SQL Server 2008 Enterprise。我有一个表,其中一个列引用另一个表(在同一数据库中)中的另一列作为外键,这是相关的 SQL 语句,更详细地说,表 [Foo] 中的列 [AnotherID] 指的是另一个表 [Goo] 的列 [GID] 作为外键。 [GID] 是表 [Goo] 的主键和聚簇索引。

我的问题是,通过这种方式,如果我没有明确地在 [Foo] 的 [AnotherID] 列上创建索引,是否会自动为 [Foo] 的 [AnotherID] 列创建一个索引——因为它的外键表 [Goo] 上的引用列 [GID] 是否已经具有主聚集键索引?

CREATE TABLE [dbo].[Foo](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[AnotherID] [int] NULL,
[InsertTime] [datetime] NULL CONSTRAINT DEFAULT (getdate()),
CONSTRAINT [PK_Foo] 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].[Foo] WITH CHECK ADD CONSTRAINT [FK_Foo] FOREIGN KEY([Goo])
REFERENCES [dbo].[Goo] ([GID])
ALTER TABLE [dbo].[Foo] CHECK CONSTRAINT [FK_Foo]

提前致谢,乔治

最佳答案

没有。 SQL Server 没有也从来没有在外键列上自动创建索引。这是一个广为流传的都市神话 - 但仅此而已 - 一个神话。

但这样做是公认的最佳实践 - 因此这是索引调优的最基本建议之一 - 将索引放在外键列上。

参见 Kimberly Tripp 的优秀 When did SQL Server stop putting indexes on foreign key columns?博客文章以获取更多背景信息。

关于sql-server-2008 - 外键和索引问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2979819/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com