0

我有一个看起来像这样的表:

CREATE TABLE Content (
            [ContentId] INT IDENTITY (1, 1) NOT NULL,
            [Title] NVARCHAR (50) Not NULL,
            CONSTRAINT [PK_Content] PRIMARY KEY CLUSTERED ([ContentId] ASC)
        )";

CREATE NONCLUSTERED UNIQUE INDEX Content_Subject_IX On Content (Title)

我知道最好将主键作为身份键并将表聚集在该键上(是否正确)?

但是出于性能原因,我希望使用类似 a 的方式快速访问表

SELECT FROM CONTENT WHERE TITLE = "overview"

我可以将我的主键作为 ContentId 并且仍然将表聚集在 Title 上以获得最快的访问速度吗?

4

2 回答 2

0

是的,您可以将聚集索引与主键约束分开;但是,为了最大程度地减少高插入表的碎片,我建议您在单调递增的列上进行集群。对于低插入表,这不是问题。

于 2013-09-02T05:36:56.300 回答
0

从技术上讲,您可以在非主键上创建集群索引。如果您的 Title 列是唯一的,那么仅在此创建集群索引会有所帮助。

此外,如果您的 Content 表被其他表引用,而不是在主键上没有集群索引,则会影响连接的性能。

如果您保持餐桌原样,您会得到更好的服务。

无论您决定进行性能测试以验证它。

于 2013-09-02T05:51:04.703 回答