小编som*_*elp的帖子

宽聚集索引与多个窄非聚集索引?

假设我有一个Student像这样的人为表:

CREATE TABLE Student (
    Id IDENTITY INT,
    SchoolId INT NOT NULL,
    FirstName VARCHAR(20) NOT NULL,
    LastName VARCHAR(20) NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

本能地,我会制作Id主键(以及聚集索引)。但是,我会发现自己在搜索,SchoolId因此我会在SchoolId.

这与主键(和聚集索引)相比如何SchoolId, Id?我将始终拥有SchoolIdif 我需要搜索 by Id,所以无论如何我都会使用聚集索引,如果我只需要搜索 by SchoolId,记录将在物理上彼此相邻。

如果我要进行任何类型的搜索或批量更新,它们会在SchoolId特定记录上,例如找到所有带有姓名/号码/任何内容的孩子SchoolId。我永远不会SchoolId在同一事务中跨多个s执行这些类型的操作。让这些记录在物理上彼此相邻的好处是否使这种方法比简单地在 上使用聚集索引要好得多Id

使用后者有很大的缺点吗?我还是个新手,有很多主题我还没有完全理解(例如碎片化)以及它如何影响这种情况。

sql-server clustered-index index-tuning physical-design nonclustered-index

6
推荐指数
1
解决办法
835
查看次数