在SQL Server中,我可以创建一个过滤的索引,这样每个父记录只有一个子记录 可以IsPrimary = 1
:
CREATE UNIQUE NONCLUSTERED INDEX UQ_Child_IsPrimary
ON dbo.Child(ParentId, IsPrimary)
WHERE IsPrimary = 1;
此查询可用于查询以查找给定父级的所有子级,还是仅适用于IsPrimary = 1
的子级?
换句话说,我是否需要为外键ParentId
添加一个额外的索引?
CREATE NONCLUSTERED INDEX [IX_Child_ParentId]
ON dbo.Child(ParentId ASC);
我不确定自从创建索引,如:
CREATE NONCLUSTERED INDEX [IX_Child_ParentId]
ON dbo.Child(ParentId ASC, SomeOtherColumn ASC);
据我所知,在ParentId
搜索时仍然可以使用,所以我不确定过滤索引是否有某种类似的行为。