如果条件为假,是否仍可以使用过滤索引?

时间:2017-11-22 18:16:21

标签: sql-server sql-server-2016

在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搜索时仍然可以使用,所以我不确定过滤索引是否有某种类似的行为。

0 个答案:

没有答案